webkit中的javascript(2)----javascript的prototype 和 constructor
来源:互联网 发布:java hello world程序 编辑:程序博客网 时间:2024/04/24 18:37
browser的javascript,严格的说,不算是webkit的本身内容
#########################################################################################
by zevolo
javascript要实现类的继承,没有像c++和java定义类别,而是采用了prototype和constructor的方式,使用了function来实现
一个类型的prototype包含着构造这个类型的方法(prototype.construtor),如同c++中的类型,而javascript的函数则相当于c++中的类型的构造函数而已
一个类的具体实例没有prototype,只有定义(函数,类型)有。
下面是一个例子
function Foo(name){
console.log("foo is called");
this.name = name;
}
function Boo(age) {
// this.constructor = arguments.callee;
console.log("boo is called");
this.age = age;
}
var a = new Foo("a");
c = Boo.constructor;
console.log("Boo's prototype is " + typeof(Boo.prototype) + ":" + Boo.prototype + ":==a?:" + (Boo.prototype === a) + ";Boo 's construtor is " + Boo.constructor);
Boo.prototype = a;
console.log("Boo's prototype is " + typeof(Boo.prototype) + ":" + Boo.prototype + ":==a?:" + (Boo.prototype === a) + ";Boo 's construtor is " + Boo.constructor + ":==original?" + (c === Boo.constructor));
var b = new Boo("10");
console.log("Boo 's prototype's prototype is " + Boo.prototype.prototype);
console.log("a 's construtor is " + a.constructor);
console.log("b 's construtor is " + b.constructor);
console.log("b.name is " + b.name);
b.constructor("haha");
console.log("b.name is " + b.name);
javascript使用了prototype链来实现继承,如上。但是这里有一个问题,就是b的constructor变成Foo,而实际运行的时候运行的是Boo。
一个解释是当new的时候,首先会设置实例的constructor,然后再调用原来的构造函数来初始化。(以后再调用constructor,就是不同的一个了)
这里更好的一个做法是,在Boo中重新设置constructor,如上的注释的部分
参考:
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
http://blog.endlesscode.com/2010/01/23/javascript-prototype-chain/
http://handyxuefeng.blog.163.com/blog/static/454521722011519104115831/
#########################################################################################
- webkit中的javascript(2)----javascript的prototype 和 constructor
- javascript 的prototype 和constructor
- JavaScript的constructor和prototype
- javascript 中的constructor和prototype图
- javascript中的__proto__, prototype和constructor
- javascript对象中的constructor,prototype和__proto__
- Javascript中的__proto__、prototype、constructor
- javascript中的this,constructor ,prototype
- Javascript中的__proto__、prototype、constructor
- JavaScript中的prototype、__proto__、constructor图解
- javascript prototype 、_proto_和constructor之间的关系
- [JavaScript] Constructor 以及 Prototype
- JavaScript prototype constructor __proto__
- 【转】Javascript中prototype和constructor详解
- JavaScript中constructor和prototype属性
- Javascript中this、prototype、constructor的理解
- Javascript中this、prototype、constructor的理解
- Javascript中this、prototype、constructor的理解
- 7,单链表交换任意两个元素(不包括表头)
- 淡墨写韵,不守起承转合
- ASP 连接ACCESS 与SQL SERVER方法
- 图4---无向图得到最小生成树
- HDU 1084 类似acm计分
- webkit中的javascript(2)----javascript的prototype 和 constructor
- 自定义C#值类型的的集合
- 测试工具(一)——Abbot 测试SWT
- 我原来如此
- 关于开源,牢骚一下
- hdu 3790 最短路径问题
- Oracle数据恢复、数据库恢复、灾难恢复专题
- oracle 分页
- 漾七夕