2016-08-30 曹强
写在前面 废话不多说,请看下面3道题,把6个console.log()的答案写下来,然后对照着在Console控制台里敲一遍,校验一下结果。 more 代码片段 ``` var A = function() {}; a.prototype = { num : 1, text : 'aaa' }; var x = new A(); // 第一题 console.log(x.num); console.log(x.text); // --这里是分割线-- var y = new A(); A.prototype = { num : 2 }; // 第二题 console.log(y.num); c 继续阅读 »
2015-06-12 Jason Liao
在看 JavaScript 框架设计的时候,知道了 jQuery 可以批量处理是因为一个叫数组化的概念,然后再对数组对象进行扩展,让数组可以完成更多的事情,但在扩展之前,先来看看几个原型方法 Array.prototype.slice 继续阅读 »
2014-03-12 W.Y.
当你在JavaScript中定义一个函数,它有一些预定义的属性,其中之一就是令人迷惑的原型。本文将详细解释什么是原型,以及为什么要在项目中使用它。 什么是原型 对象初始化时原型是一个空对象,你可以将任何其他对象添加到原型上。 ``` javascript var myObject = function(name){ this.name = name; return this; }; console.log(typeof myObject.prototype); // object console.log(myObject.prototype); // Object {} myObject.prototy 继续阅读 »
2017-03-06 高悦翔
函数对象 JavaScript中函数就是对象. 函数对象连接到Function.prototype. 当把一个函数当作构造函数(使用new关键字)使用时, 新创建的对象的原型就是该函数的prototype对象. 我们可以通过给prototype设置属性而达到让该类对象拥有同样的公共属性的目的. 继续阅读 »
2016-07-31 曹强
原型链继承 让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法 ``` function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType() { this.subProperty=false; } //继承SuperType SubType.prototype=new SuperType(); SubType.prototype.getSubValue=f 继续阅读 »
2016-08-30 曹强
写在前面 很多前端工程师的人说自己精通Javascript语言,问他call()和apply()这两个方法有什么区别,结果往往是一问三不知。 其实区分 apply和call就一句话: Javascript foo.call(this,arg1,arg2,arg3)==foo.apply(thsi,arguments)==this.foo(arg1,arg2,arg3); more 两者区别 call 和 apply都属于Function.prototype的一个方法,它是Javascript引擎内在实现的,因为属于Function.prototype对象的实例,也就是每个方法都有call,apply属性 继续阅读 »
2014-06-21 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory. 概述 本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 -- 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。 more 概论、范式和思想 在开始讨论之前,有必要掌握一些 OOP 的基本特征,并弄清楚一些基本概念。 ECMAScr 继续阅读 »
2014-05-20 W.Y.
此文译自 Dmitry A. Soshnikov 的 JavaScript. The core.. 本文是详解 ECMA-262-3 系列的概述和总结。每个部分都包含对应章节的连接,所以你可以阅读它们以获得更深入的了解。 目标阅读者:有经验的程序员,专业人士。 我们从对象的概念开始,这是 ECMAScript 的根本。 more 对象 ECMAScript 做为一个高度抽象的面向对象语言,是通过对象来交互的。即使 ECMAScript 里边也有基本类型,但是,当需要的时候,它们也会被转换成对象。 一个对象就是一个属性集合,并拥有一个独立的 prototype(原型)对象。这个 prototype 可以是一个对象或者 nu 继续阅读 »
2014-06-22 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.2. OOP: ECMAScript implementation. 概述 这一章的第二部分是关于 EMCAScript 中的面向对象编程。在第一部分中我们讨论了 OOP 的基本理论并勾画出和 ECMAScript 的相似之处。在阅读第二部分之前,如果有必要,我还是建议首先阅读这一章的第一部分 概论,因为后面将会用到其中的一些术语。 more ECMAScript 中 OOP 的实现 在回顾了概论中的一些重点之后,我们终于回到了 ECMAScript 本身。现在,我们已经了解了它的 OOP 方式,让我们再来准 继续阅读 »
2016-10-12 曹强
this的指向大概可以分成四种: * 作为对象的方法调用 * 作为普通函数调用 * 构造器调用 * Function.prototype.call或Function.prototype.apply调用 1. 作为对象的时候,this指向该对象 var obj = { a: 1, getA: function() { alert(this === obj); //true; alert(this.a); //1 } }; obj.getA(); 2. 作为普通函数调用,this总是指向全局对象(在浏览器中就是window) window.name = 'global 继续阅读 »