请选择 进入手机版 | 继续访问电脑版

我爱科技论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3041|回复: 0

[技术分享] JavaScript中的call,bind,apply的使用

[复制链接]

696

主题

743

帖子

8539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8539

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2018-3-20 08:35:38 | 显示全部楼层 |阅读模式
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8. JavaScript中的call,bind,apply的使用
  9. </body>
  10. <script>
  11.     var name = "小王", age = 18;
  12.     var obj = {
  13.         name: "花花",
  14.         objAge: this.age,
  15.         myFunc: function () {
  16.             // 这个this指向obj对象
  17.             console.log(this.name + "年龄" + this.age);
  18.         }
  19.     };

  20.     // 答应日志信息
  21.     console.log(obj.objAge);
  22.     obj.myFunc();


  23.     var fav = "盲僧";

  24.     function Shows() {
  25.         // 这里的this指向的是window对象
  26.         console.log(this.fav);
  27.     }

  28.     Shows();


  29.     // call(), apply(), bind(); 用来重定义this这个对象
  30.     var name = "小王", age = 17;
  31.     var object = {
  32.         name: "校长",
  33.         objAge: this.age,
  34.         myFunc: function () {
  35.             console.log(this.name + "年龄" + this.age);
  36.         }
  37.     };
  38.     var db = {
  39.         name: "秀秀",
  40.         age: 99
  41.     };

  42.     // 开始测试
  43.     obj.myFunc.call(db);
  44.     obj.myFunc.apply(db);
  45.     obj.myFunc.bind(db)();

  46.     // 测试2
  47.     obj.myFunc.call(db, "成都", "上海");
  48.     obj.myFunc.apply(db, ['成都', '上海']);
  49.     obj.myFunc.bind(db, '成都', '上海')();
  50.     obj.myFunc.bind(db, ['成都', '上海'])();


  51.     // apply 实例
  52.     // 定义一个人类
  53.     function Person(name, age) {
  54.         this.name = name;
  55.         this.age = age;
  56.     }

  57.     // 定义一个学生类
  58.     // apply 的使用
  59.     function Student(name, age, grade) {
  60.         // arguments:是一个数组,也就是[“zhangsan”,”21”,”一年级”];
  61.         Person.apply(this, arguments);
  62.         this.grade = grade;
  63.     }

  64.     // call 的使用
  65.     function Pupile(name, age, grade) {
  66.         Person.call(this, name, age);
  67.     }

  68.     // 创建一个学生类
  69.     var student = new Student("zhangsan", 25, "一年级");
  70.     alert("name:" + student.name + "\n" + "age:" + student.age + "\n" + "grade" + student.grade + "\n");

  71. </script>
  72. </html>
复制代码






上一篇:计算机程序设计艺术三板合集PDF高清电子版分享
下一篇:2020年最新最好用的科学上网工具(2020年2月更新)【安卓+苹果+电脑版】
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案; 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信扫一扫

快速回复 返回顶部 返回列表