当前位置: 首页 > wzjs >正文

有哪些好的做问卷调查的网站咸阳网络推广

有哪些好的做问卷调查的网站,咸阳网络推广,做网站一定要会ps么,最低的成本做网站在 JavaScript 中,.call() 和 .apply() 都是 Function 原型上的方法,用于改变函数执行时的上下文对象(即 this 指向),它们的区别仅在于参数传递的形式不同。下面结合几个常见场景,说明它们的实际应用。 1. …

在 JavaScript 中,.call().apply() 都是 Function 原型上的方法,用于改变函数执行时的上下文对象(即 this 指向),它们的区别仅在于参数传递的形式不同。下面结合几个常见场景,说明它们的实际应用。


1. 基本语法

func.call(thisArg, arg1, arg2,);
func.apply(thisArg, [arg1, arg2,]);
  • thisArg:调用时函数内部 this 应该指向的对象。
  • 参数列表call 是逗号分隔的参数序列;apply 是一个数组(或类数组)一次性传入。

2. “借用”其它对象的方法

有时候 A 对象没有某个方法,但 B 对象有,想让 A 使用 B 的方法,就可以借用:

const objA = { x: 10 };
const objB = {x: 5,getX() {return this.x;}
};console.log(objB.getX());          // 5
console.log(objB.getX.call(objA)); // 10

这里用 call(objA)getX 中的 this 强制指向 objA,就实现了“方法借用”。


3. 传递可变参数(数组转展开)

如果要把一个数组作为参数列表传给函数,用 apply 更方便:

function sum(a, b, c) {return a + b + c;
}const nums = [1, 2, 3];
console.log(sum.apply(null, nums)); // 6

等价于:

console.log(sum.call(null, nums[0], nums[1], nums[2])); // 6

在 ES6 之前,这个技巧常用于 Math.max/Math.min 获取数组最大最小值:

const arr = [5, 1, 8, 3];
const max = Math.max.apply(null, arr); // 8
const min = Math.min.apply(null, arr); // 1

ES6+ 可直接写 Math.max(...arr),但在老环境或动态参数场景下,.apply 仍然有效。


4. 构造可重用的“类”或混入(Mixin)

当多个对象需要共享同一组方法时,可以用 call/apply 在初始化时添加属性:

function Person(name) {this.name = name;
}
Person.prototype.say = function () {console.log(`Hi, I'm ${this.name}`);
};function Employee(name, company) {Person.call(this, name);  // “继承” Person 构造函数this.company = company;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;Employee.prototype.getCompany = function () {console.log(this.company);
};const emp = new Employee('Alice', 'Acme Inc.');
emp.say();        // Hi, I'm Alice
emp.getCompany(); // Acme Inc.

这里 Person.call(this, name)Employee 构造函数复用了 Person 的初始化逻辑。


5. 在事件处理或异步场景中绑定上下文

在回调函数中,this 往往丢失。可用 callapply 手动指定:

const obj = {value: 42,getValueAfterDelay(delay) {setTimeout(function () {// 普通函数中 this 指向全局或 undefinedconsole.log(this.value);  }.call(this), delay);}
};obj.getValueAfterDelay(1000);
// 42

不过更常用的是 .bind(this),它会返回一个新的函数:

setTimeout(function () {console.log(this.value);
}.bind(obj), 1000);

6. 小结

  • 何时用 .call()
    需要显式地将若干个独立参数逐一传入,并指定 this

  • 何时用 .apply()
    参数已经以数组或类数组形式准备好,想“一次性”传递给函数。

  • .bind() 的关系

    • call/apply 立即执行函数并指定 this
    • bind 返回一个新函数,后续调用时 this 永久绑定。

掌握了这三种方法,就可以灵活地控制函数执行的上下文,以及参数的传递方式,特别是在函数复用、混入、事件回调、动态参数等场景中非常有用。

http://www.dtcms.com/wzjs/421890.html

相关文章:

  • 凤凰一级a做爰片免费网站网络营销模式有哪些类型
  • 中国人民银行广州分行门户网站天津放心站内优化seo
  • 花生壳做的网站稳定吗网推项目平台
  • 外贸建站独立站站长之家站长工具
  • 学网站建设难吗快速排名优化怎么样
  • 网站建设跟网站开发有什么区别吗怎么进行网站关键词优化
  • 连云港网站关键词互联网营销是什么
  • 检测一个网站用什么软件做的方法二维码引流推广的平台
  • 深圳自己做网站 服务器查询网 网站查询
  • 郑州哪些公司做网站比较好地推拉新app推广怎么做
  • 服装网站建设目标客户无限制搜索引擎排名
  • 在网站做时时彩代理违法seo网页优化培训
  • 中国建设银行党费易网站自制网站教程
  • 电子商务网站建设课程的心得关键词seo服务
  • 怎么做影视类网站百度网首页登录入口
  • wordpress 字体 插件下载seo优化6个实用技巧
  • 高级网站建设费用自己做一个网站需要多少钱
  • 中国有哪些网站可以做兼职如何搜索关键词热度
  • 佛山市研发网站建设哪家好线上营销培训
  • 建设部建筑招投标网站网络搜索优化
  • 计算机专业学做网站吗石家庄百度seo代理
  • 微信做的地方门户网站百度怎样发布信息
  • 做外贸需关注的网站头条权重查询站长工具
  • wordpress 炫酷主题湖南seo网站策划
  • 苹果园网站建设品牌推广的具体方法
  • 苹果电脑如何做网站windows优化大师自动安装
  • 个旧市做网站公司seo教程最新
  • 源码下载器长沙靠谱关键词优化服务
  • 数据展示网站模板2022年搜索引擎优化指南
  • 用python开发网站seo薪资水平