Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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 Js继承和instanceof_Javascript - Fatal编程技术网

Javascript Js继承和instanceof

Javascript Js继承和instanceof,javascript,Javascript,有人能解释为什么我们有这种行为吗?我知道应该是这样,但我无法解释 instanceof运算符检查左侧操作数是否是在其原型链上具有右侧操作数的原型对象的对象。由于两个函数共享同一个原型对象,因此一个函数的实例被视为另一个函数的实例。instanceof操作符检查左侧操作数是否是在其原型链上具有右侧操作数的原型对象的对象。由于两个函数共享相同的原型对象,因此一个函数的实例被视为另一个函数的实例。o instanceof f f检查f.prototype引用的对象是否出现在o的原型链中的任何位置。在您

有人能解释为什么我们有这种行为吗?我知道应该是这样,但我无法解释


instanceof
运算符检查左侧操作数是否是在其原型链上具有右侧操作数的原型对象的对象。由于两个函数共享同一个原型对象,因此一个函数的实例被视为另一个函数的实例。

instanceof操作符检查左侧操作数是否是在其原型链上具有右侧操作数的原型对象的对象。由于两个函数共享相同的原型对象,因此一个函数的实例被视为另一个函数的实例。

o instanceof f f
检查
f.prototype
引用的对象是否出现在
o
的原型链中的任何位置。在您的情况下,由于
foo.prototype
foo1.prototype
都引用同一个对象,因此通过
new foo
new foo1
创建的任何对象都将是
instanceof
foo1


本规范的以下章节对此进行了介绍:,最后一个链接中完成了大部分工作,步骤4到7(第7步是通过
o
的原型链进行循环的子步骤)。在您的情况下,由于
foo.prototype
foo1.prototype
都引用同一个对象,因此通过
new foo
new foo1
创建的任何对象都将是
instanceof
foo1


本规范的以下部分将介绍这一点:,最后一个链接中完成了大部分工作,步骤4到7(第7步是通过
o
的原型链进行循环的子步骤)。

在JavaScript中,使用对象

我认为,如果你把它与更熟悉的物体相比较,就更容易理解了

//defines a "class" Person
function Person() {} 

//defines a "class" Animal
function Animal() {}
改变
动物
原型

Person.prototype = Animal.prototype = {};
例如,原型可以用来扩展“类”

实例化

var myPerson = new Person();
检查我的人是否是的实例

// true because you instantiate the same prototype
// remember Person.prototype = Animal.prototype = {};
alert(myPerson instanceof Animal);

在JavaScript中,使用对象

我认为,如果你把它与更熟悉的物体相比较,就更容易理解了

//defines a "class" Person
function Person() {} 

//defines a "class" Animal
function Animal() {}
改变
动物
原型

Person.prototype = Animal.prototype = {};
例如,原型可以用来扩展“类”

实例化

var myPerson = new Person();
检查我的人是否是的实例

// true because you instantiate the same prototype
// remember Person.prototype = Animal.prototype = {};
alert(myPerson instanceof Animal);