首先js是一种面对对象的语言,虽然大多数时候是以面对过程的形式展现出来。先来看一段代码:function Base() { this.name = 'tarol';}function Sub() { this.age = 18;}var b = new Base;Sub.protot...
分类:
编程语言 时间:
2015-02-09 17:59:59
阅读次数:
171
原型[prototype]:为其他对象提供共享属性的对象。每个函数都有一个原型(prototype)属性,这个属性是一个指针,指向一个对象,这个对象包含特定实例共享的一些属性和方法。以例服人:这个例子说明了原型对象是共享的,并且是一个指针,并且对象的实例中也有指向prototype指向对象的指针。f...
分类:
编程语言 时间:
2015-02-05 19:56:24
阅读次数:
182
前面谈到了javascript的类式继承。这篇继续部分类式继承,及一些现代继承。类式继承模式-代理构造函数这种模式通过断开父对象与子对象之间原型之间的直接链接关系,来解决上次说到的共享一个原型所带来的问题,而且同时可以继续原型链带来的好处。代码:function inherit(C,P){ v...
分类:
编程语言 时间:
2015-02-02 21:23:43
阅读次数:
199
下面是javascript寄生组合式继承源代码,选自这里。讲解请见我所加注释:function creatObject(o){//该函数是为了创建原型链对象所用,传入值o为一个function F(){}//新建函数F.prototype = o;//设置该函数的原型属性为传入对象return .....
分类:
编程语言 时间:
2015-01-30 19:20:32
阅读次数:
130
正如我们之前所了解的,JavaScript中的每个函数都有一个名为prototype的对象属性。该函数被new操作符调用时会创建出一个对象,并且该对象中会有一个指向其原型对象的秘密链接(在某些环境中,该链接名为__proto__),我们就可以在新建的对象中调用相关原型对象的方法和属性。而原型对象自身...
分类:
其他好文 时间:
2015-01-29 12:20:32
阅读次数:
171
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。123...
分类:
Web程序 时间:
2015-01-22 19:45:01
阅读次数:
177
经常被问到js的继承以及原型链(prototype chain)的知识,每每看过之后都很快遗忘,现整理一下自己了解的情况,以加深了解。 一、js对象 js里面都是对象,没有“类”的概念,我们使用new操作来从原型对象生成一个实例对象,例如: function Parent(name){ ...
分类:
编程语言 时间:
2015-01-20 20:27:14
阅读次数:
298
通过前几章的讲解,我们已经摸清楚Javascript的几个重要特征,具有类概念的函数,“函数”实例化的后得到对象, 原型链, 函数的定义等等。作为高级脚本语言的Javascript同样是面向对象的语言,但是Javascript中的数据类型不像JAVA中的“万物皆对象”,本文我们就来深入学习一下Jav...
分类:
编程语言 时间:
2015-01-16 18:29:52
阅读次数:
191
在这之前,toString()所做的仅仅是返回this.name的内容而已,现在新增了额外的任务,检查对象中是否存在this.constructor.uber属性。
如果存在,就先调用该属性的toString方法。
this.constructor.uber指向当前对象父级原型的引用。
因而,当调用Triangle实体的toString方法时,其原型链上所有的toString都会被调用。...
分类:
其他好文 时间:
2015-01-15 10:59:10
阅读次数:
184
function Shape(){
this.name = 'shape';
this.toString = function(){
return this.name;
}
}
function TwoDShape(){
this.name = '2D shape';
}
function Triangle(side,height){
this.name = 'Triangle';...
分类:
编程语言 时间:
2015-01-14 22:56:01
阅读次数:
285