Questions tagged «prototypal-inheritance»


29
__proto__VS。JavaScript原型
该图再次显示每个对象都有一个原型。构造函数Foo也具有其自己__proto__的Function.prototype,而Foo又通过其__proto__属性再次引用Object.prototype。因此,重复一遍,Foo.prototype只是Foo的显式属性,它引用b和c对象的原型。 var b = new Foo(20); var c = new Foo(30); __proto__和之间有什么区别prototype? 该图取自dmitrysoshnikov.com。

8
为什么扩展本机对象是一种不好的做法?
每个JS意见领袖都说,扩展本机对象是一种不良做法。但为什么?我们会获得出色的表现吗?他们是否担心有人会以“错误的方式”这样做,并向中添加了可枚举的类型Object,实际上破坏了任何对象上的所有循环? 以TJ Holowaychuk的should.js为例。他向中添加了一个简单的吸气剂,Object并且一切正常(源代码)。 Object.defineProperty(Object.prototype, 'should', { set: function(){}, get: function(){ return new Assertion(Object(this).valueOf()); }, configurable: true }); 这真的很有意义。例如,可以扩展Array。 Array.defineProperty(Array.prototype, "remove", { set: function(){}, get: function(){ return removeArrayElement.bind(this); } }); var arr = [0, 1, 2, 3, 4]; arr.remove(3); 是否有反对扩展本机类型的论点?

4
为什么使用Object.prototype.hasOwnProperty.call(myObj,prop)代替myObj.hasOwnProperty(prop)?
如果我理解正确,那么Javascript中的每个对象都是从Object原型继承的,这意味着Javascript中的每个对象都可以通过其原型链访问hasOwnProperty函数。 在阅读require.js的源代码时,我偶然发现了该函数: function hasProp(obj, prop) { return hasOwn.call(obj, prop); } hasOwn是对的引用Object.prototype.hasOwnProperty。将此功能编写为 function hasProp(obj, prop) { return obj.hasOwnProperty(prop); } 既然如此,我们为什么要完全定义此功能?是否只是为了获得(略微)提高性能而使用快捷方式和对属性访问进行本地缓存的问题,还是我缺少在没有此方法的对象上使用hasOwnProperty的情况?

11
JavaScript的基于原型的继承的好例子
我使用OOP语言编程已有10多年了,但是现在我正在学习JavaScript,这是我第一次遇到基于原型的继承。我倾向于通过学习良好的代码来学习最快。正确使用原型继承的JavaScript应用程序(或库)的写得很好的示例是什么?并且您能(简要地)描述如何/在何处使用原型继承,所以我知道从哪里开始阅读?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.