最近我也在研究这个东西
虽然迷迷糊糊的知道一些,但还没到让别理解的那一步。所以我,我只有推荐一篇文章给你 希望能帮到你。
http://www.cn-cuckoo.com/2007/08/01/understand-javascript-closures-72.html
虽然迷迷糊糊的知道一些,但还没到让别理解的那一步。所以我,我只有推荐一篇文章给你 希望能帮到你。
http://www.cn-cuckoo.com/2007/08/01/understand-javascript-closures-72.html
this.name = name;
this.sex = sex;
}
//定义了构造方法之后,构造方法具有prototype属性,该属性本身是一个Object,在使用new运算符的时候,会首先复制这个原形,然后将构造方法放到这个新对象里运行。
Human.prototype.run = function(){
alert(this.name + "is running");
}
Human.prototype.age = 0;
Human.prototype.growUp = function(){
this.age++;
}此时Human.prototype的内容为:
{
age:0,
run:function(){//上面的方法}
growUp:function(){//上面的方法}
}var guojing = new Human("GuoJing",true); 使用这样的方法来创建对象,首先会复制上面的Human.prototype,然后在对象内部运行构造方法Human(),将构造参数设置进去。这样guojing内容为:
{
name:"GuoJing",
sex:true,
age:0,
run:function(){//上面的方法}
growUp:function(){//上面的方法}
}说得够详细了么?关于JavaScript中的面向对象其实还有很多地方是值得讨论的,但是一定要从理解原型/构造方法开始。
5楼说的很好的,支持
准确地说是可以为Function的实例function添加prototype的成员,使其在new的时候具备该属性。深入点研究的话会知道,Function本身也是个构造器,也具有prototype,比如这样:
Function.prototype.alertContent = function(){
alert("This function is:\n"this);
}
(function(){
var f = "gagaga",
}).alertContent()Function.prototype中我们最常用到的成员就是call和apply啦。