Tag: 原型

为什么扩展本地对象是一个不好的做法?

每个JS意见领袖都说扩展本地对象是一个不好的做法。 但为什么? 我们得到一个perfomance命中? 他们是否担心有人这样做是“错误的方式”,并将可枚举的types添加到Object ,实际上会摧毁任何对象上的所有循环? 以TJ Holowaychuk的should.js为例。 他添加了一个简单的getter 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); 有没有反对扩大本地types的任何争论?

__proto__ VS. 原型在JavaScript中

这个图再次表明,每个对象都有一个原型。 构造函数Foo也有它自己的__proto__ ,它是Function.prototype,并且通过__proto__属性再次引用Object.prototype。 因此,重复一遍,Foo.prototype只是Foo的一个明确的属性,指的是b和c对象的原型。 var b = new Foo(20); var c = new Foo(30); __proto__和prototype属性有什么区别? 这个数字是从这里取的。

在Derived.prototype = new Base中使用“new”关键字的原因是什么?

下面的代码是做什么的: WeatherWidget.prototype = new Widget; 其中Widget是一个构造函数,我想用一个新的函数WeatherWidget扩展Widget的“类”。 什么是new关键字在那里做,如果被遗漏会发生什么?

在JavaScript中使用“原型”与“this”?

有什么区别 var A = function () { this.x = function () { //do something }; }; 和 var A = function () { }; A.prototype.x = function () { //do something };

AngularJS中范围原型/原型inheritance的细微差别是什么?

API参考范围页面说: 范围可以从父范围inheritance。 开发人员指南范围页面说: 范围(原型)从其父范围inheritance属性。 那么,子范围是否总是从其父范围原型inheritance? 有例外吗? 当它inheritance时,是否正常的JavaScript原型inheritance?

理解Object.create()和new SomeFunction()之间的区别

我最近偶然发现了JavaScript中的Object.create()方法,试图推导出它与使用new SomeFunction()创建对象的新实例的方式不同,以及何时想要使用另一个方法。 考虑下面的例子: var test = { val: 1, func: function() { return this.val; } }; var testA = Object.create(test); testA.val = 2; console.log(test.func()); // 1 console.log(testA.func()); // 2 console.log('other test'); var otherTest = function() { this.val = 1; this.func = function() { return this.val; }; }; var otherTestA = new otherTest(); var otherTestB = […]

使用原型的优点,vs直接在构造函数中定义方法?

我想知道是否有任何其他的优势,我应该走哪条路? 构造方法: var Class = function () { this.calc = function (a, b) { return a + b; }; }; 原型方法: var Class = function () {}; Class.prototype.calc = function (a, b) { return a + b; }; 我不喜欢这样,使用原型,方法定义是从类中分离出来的,我不知道是否有任何特定的原因,我应该只用第一种方法。 另外,是否有利用函数文字来定义一个“类”,而不仅仅是函数定义: var Class = function () {}; VS function Class () {}; 谢谢!

原型为数组的Javascript对象成员将被所有类实例共享

有没有人注意过这种行为? 这真的把我扔了…我会希望原型数组是专用于每个类实例,而不是在所有类实例之间共享。 有人可以验证这是正确的行为,也许更详细地解释这种行为? 注意注释代码以及它如何影响脚本的行为。 <html> <head> <script type="text/javascript"> function print_r( title, object ) { var output = ''; for( var key in object ) { output += key + ": " + object[ key ] + "\n"; } output = title + "\n\n" + output; alert( output ); } function Sandwich() { // Uncomment this […]