Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 对象未继承其原型的问题';s方法_Javascript_Prototype - Fatal编程技术网

Javascript 对象未继承其原型的问题';s方法

Javascript 对象未继承其原型的问题';s方法,javascript,prototype,Javascript,Prototype,查看图片。这怎么可能?对象不应该继承其原型的方法吗 King\uuuuu proto\uuuuuu(在大多数当前浏览器中定义,但在当前ECMAScript规范中未定义)是在搜索原型链时使用的 prototype在函数作为构造函数调用时使用,以分配新对象的\uuuuu proto\uuuu属性。由于原型通常不是构造函数,prototype.prototype很少有用,甚至很少定义 示例: Array.prototype === (new Array()).__proto__ //true (new

查看图片。这怎么可能?对象不应该继承其原型的方法吗

King
\uuuuu proto\uuuuuu
(在大多数当前浏览器中定义,但在当前ECMAScript规范中未定义)是在搜索原型链时使用的

prototype
在函数作为构造函数调用时使用,以分配新对象的
\uuuuu proto\uuuu
属性。由于原型通常不是构造函数,
prototype.prototype
很少有用,甚至很少定义

示例:

Array.prototype === (new Array()).__proto__ //true
(new Array()).prototype === undefined //true

var a = {0:'a', 1:'b', 2:'c', length:3}
a.toString() // "[object Object]"
var a = {0:'a', 1:'b', 2:'c', length:3, __proto__:Array.prototype}
a.toString() // "a,b,c"

var obj = {__proto__:{}}
obj.name // undefined
obj.__proto__.name = "someString"
obj.name // "someString"
obj.name2 = "anotherString"
obj.__proto__.name2 // undefined

对象继承自其构造函数的原型(即创建实例时构造函数拥有的原型),该原型由内部
[[prototype]]]
属性引用

默认情况下,只有函数具有prototype属性。e、 g

// Declare function
function Foo(name) [
    this.name = name;
}

// Add a showName method to its prototype
Foo.prototype.showName = function() {
    return this.name;
}

// Create an instance
var foo = new Foo('foo');

// Call inherited method
foo.showName(); // foo

Mozilla浏览器中还有一个引用对象的
[[Prototype]]
非标准属性,它可能在ES6中,但不适用于一般web。

Prototype!=__proto__;
请向我们展示您的代码。此外,将控制台输出灰显也是毫无意义的。顺便说一句,要查看您的
pieza
所继承的原型,您可以单击
King
旁边的矩形来展开属性。请注意
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiz>是一种非标准的Mozilla功能,在其他一些浏览器中复制。它不应用于常规脚本编写。此外,如果OP不了解原型继承是如何工作的,那么引入
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。它应该只是顺便提一下,如果有的话。@RobG,所以使用它很好。谢谢你让我知道这是非标准的。你误解了便条。这并不意味着所有实现中已经存在的东西,只是一些。(7.6MB)在很多年内都不会成为标准。因此,不,对于一般的web开发来说,它“不适合使用”(正如在引用的MDN页面上所指出的)。另外,
\uuuuuu proto\uuuuu
属性仅对web浏览器是必需的(如果在ed.6成为标准时仍然存在),它对于其他实现是可选的。顺便问一下,是否定义了如果执行
Function.prototype()
,会发生什么?是的。看见你会在第一句话中找到它。