命名空间的javascript继承
我不熟悉javascript中的oop命名空间的javascript继承,javascript,oop,Javascript,Oop,我不熟悉javascript中的oop var obj1 = { name : 'honda', getName : function(){ console.log(this.name); } } var obj2 = {name:'maruti'}; 我想访问作用域为obj2的obj1的getName,如obj2.getName() 这就是您想要的: obj1.getName.call(obj2); 正如@roland所说,如果要为方法提供参数数组,还可以使用.appl
var obj1 = {
name : 'honda',
getName : function(){
console.log(this.name);
}
}
var obj2 = {name:'maruti'};
我想访问作用域为obj2
的obj1
的getName
,如obj2.getName()
这就是您想要的:
obj1.getName.call(obj2);
正如@roland所说,如果要为方法提供参数数组,还可以使用.apply(obj2,[arr of args])
编辑:
如果要将所有obj1
方法导入obj2
,可以使用纯JavaScript:
for (var m in obj1) {
// if you want to copy obj1's attributes, remove this line
if (obj1[m] instanceof Function) {
obj[2][m] = obj1[m];
}
}
或者您也可以使用jQuery执行此操作:
$.extend(obj2, obj1);
如果希望使用
obj1
作为创建新对象的模板,可以使用
var obj1 = {
name : 'honda',
getName : function(){
console.log(this.name);
}
}
var obj2 = Object.create(obj1);
obj2.name = 'bob';
obj2.getName(); // outputs 'bob'
我希望输出是使用obj2作用域的本田。@user2087122为什么要这样做?如何在obj2中继承obj1?如果你想要本田,那么obj2到底有什么用?@user2087122-在
obj2
的作用域中要求答案是“本田”根本没有意义。您可以在obj2的作用域中获取obj2的名称,也可以在obj1的作用域中获取obj1的名称。obj2的名称为“mauruti”
。这就是obj2
范围内的答案,除非您将obj2
的名称更改为“本田”
。