1.所有函数都有一个特别的属性 prototype : 显式原型属性 [普通构造函数的实例对象没有prototype 属性,构造函数有__proto__属性,原型对象有__proto__属性 ] 2.函数的prototype属性(图) 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) [即Object实例对象 {}] 原型对象中有一个属性constructor, 它指向函数对象 [相互引用] 3.给原型对象添加属性(一般都是方法) 作用: 函数的所…
二. 原型对象   在JavaScript 中,每当定义一个对象(函数)时候,对象中都会包含一些预定义的属性.其中函数对象的一个属性就是原型对象 prototype.注:普通对象没有prototype,但有__proto__属性.  原型对象其实就是普通对象(Function.prototype除外,它是函数对象,但它很特殊,他没有prototype属性(前面说道函数对象都有prototype属性)).看下面的例子: function f1(){}; console.log(f1.prototy…
  前  言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方法.静态属性/方法.原型属性/方法,并且一起来探讨一下JS中的原型与原型链. 一 成员属性与成员方法 在构造函数中,通过this.属性声明.或者实例化出对象后,通过“对象.属性”追加的.都属于成员属性.或成员方法:也叫实例属性与实例方法 成员属性/方法,是属于实例化出的这个对象.通过"对象.属性&q…
回想自己已经工作了有一段时间了,但是自己对JavaScript的原型链.和继承的理解能力没有到位,最近他们彻底的整理并且复习了一遍. 本案例中部分文案来自网络和书籍,如有侵权请联系我,我只是把我的理解和想法告诉大家. 本着互联网分享精神.现在我就将我的学习以及理解分享给大家.如果那里又说的不对的地方请私信我,我会及时回复. 创建一个构造函数- 案例一 讲解:很多人见到了久违的new操作符,于是就叫Person为“类”,可是又没有关键字class的出现,觉得叫“类”有点勉强.于是退而求其次叫Per…
前不久写了有关原型链中prototype.__proto__和constructor的关系的理解,这篇文章说说在原型链继承中的prototype.__proto__和constructor的关系. 通过以下最简单的原型链继承(省略了属性和方法)来讨论: 1 function SuperType(){}; 2 function SubType(){}; //继承了SuperType 3 SubType.protoType = new SuperType(); //创建了一个SubType的实例 4…
关于javascript的原型链有一个问题我一直很疑惑:为什么 Function instanceof Object 与 Object instanceof Function都为true呢? Function instanceof Object // ->trueObject instanceof Function // ->true12先给个结论吧(函数a和对象b指什么看下去就直到了):Object instanceof Function的实质就是函数a在Object的原型链上:Functi…
在js里,继承机制是原型继承.继承的起点是 对象的原型(Object prototype). 一切皆为对象,只要是对象,就会有 proto 属性,该属性存储了指向其构造的指针. Object prototype也是对象,其 proto 指向null. 对象分为两种:函数对象和普通对象,只有函数对象拥有『原型』对象(prototype). prototype的本质是普通对象. Function prototype比较特殊,是没有prototype的函数对象. new操作得到的对象是普通对象. 当调…
/**   *@author 程无衣   *@description 关于在原型对象中属性被覆盖   */       function Person(){}       Person.prototype={   constructor:Person,   age:24   }       var person1= new Person();   person1.age=20;   console.log(person1.age);//20   /*输出的是实例的age属性   说明Person…
js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA.prototype.sayColor = function () { alert(this.color); }; function ClassB(sColor, sName) {//在 ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性 ClassA.call(th…
第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.color); }; } function ClassB(sColor, sName) { this.newMethod = ClassA; this.newMethod(sColor); delete this.newMethod; this.name = sName; this.sayName = f…