Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命名空间的javascript继承_Javascript_Oop - Fatal编程技术网

命名空间的javascript继承

命名空间的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

我不熟悉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所说,如果要为方法提供参数数组,还可以使用
.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
的名称更改为
“本田”