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