标签:
在接触JS的过程中,随着理解的深入会逐渐的理解一些比较深奥的理论或者知识,
那么今天我们来介绍一下比较难理解的prototype和constructor。
初步理解:
function name(obj){
alert(obj)//"uw3c"}name("uw3c")这是个普通的自调用的例子,大家都能理解,那么看下一个例子:
function name(obj){
alert(obj)//"uw3c"}var test = new name("uw3c")test();function uw3c(){
}var test = new uw3c();alert(typeof uw3c);//functionalert(typeof test);//objectfunction name(){
alert(JSON.stringify(name.prototype))//{},是个空对象}name();var test = new name();alert(JSON.stringify(test.prototype))//undefined,不存在这个对象什么是prototype:
var function{
prototype:prototype{ constructor:constructor == function }}prototype的作用:
function uw3c(){
}uw3c.prototype.name = "a";var test = new uw3c();alert(test.name)//"a";var test={};
uw3c.call(test);prototype是继承还是克隆:
prototype的优点:
讲了这么多,大家肯定会问,prototype有什么用处,它有什么优点?看下面代码:
function uw3c(name){
alert("姓名:" + name + ",年龄:" + this.age + ",性别:" + this.sex);
}
uw3c.prototype.age = 15; (共有的)
uw3c.prototype.sex = "man";
var test1 = new uw3c("css");//姓名:css,年龄:15,性别:man
var test2 = new uw3c("js");//姓名:js,年龄:15,性别:man
看完这个例子大家应该明白了,使用prototype既能保留公有性,又能具有私有性。
//------------------------------------
下面实例
function aa(name){
alert(‘姓名:‘ + name + ‘ 年龄:‘ + this.age);
}
aa.prototype.age = 21; (共有的属性)
var test = new aa(‘小芳‘);
var test1 = new aa(‘小明‘);
//结果:姓名:小芳 年龄:21
// 姓名:小明 年龄:21
内容来自:http://www.uw3c.com/jsviews/js12.html
==================================================
给对象新增方法和属性,可以用来开发插件
比如
function aa(){}
aa.prototype.name = ‘小芳‘;
aa.prototype.t = function() {
alert(this.name);
}
var test = new aa();
test.t();
//结果弹出小芳
这样相当于给对象添加了额外的方法和属性
所以没猜错的话jQuery.prototype这里应该是在开发JQuery插件
标签:
原文地址:http://www.cnblogs.com/mjzhang/p/4566780.html