【发布时间】:2020-04-03 15:58:52
【问题描述】:
考虑以下对象
var person1 = {
name: 'Sam',
age: 26,
job: 'teacher',
testMethod : function() {
//do something
}
};
var person2 = {
name: 'John',
age: 30,
job: 'student'
};
我想从 person1 借用 testMethod 到 person2。
//Using = operator
person2.testMethod = person1.testMethod;
person2.testMethod();
//Using call method
person1.testMethod.call(person2)
这两种借贷方式有什么区别?
【问题讨论】:
-
如果您的函数不使用 person1 的任何内部值,则没有问题,或者如果您的 person1 和 person2 具有相同的结构,则没有问题。
-
@CodeManiac,如果是=,是否会在内存中创建单独的方法定义副本?
-
不,它不会只创建一个引用,可以访问
person2.testMethod,并且在调用方法中你不会在person2上创建引用 -
第一个版本给
person2增加了一个新属性,不是吗?
标签: javascript methods apply