javaScript权威指南之类的创建

来源:互联网 发布:战地4狙击枪数据 编辑:程序博客网 时间:2024/05/09 01:06

javaScript权威指南之类的创建

工厂方法创建类创建

通过inhreit()创建一个继承自它的对象,这样就建了一个JavaScript类。

// 工厂方法创建类function range(from, to){    var r = inherit(range.methods);    r.from = from;    r.to = to;    return r;}// 所有的对象继承自这个对象range.methods = {    include: function(x){        return this.from <x && x<= this.to;    },    foreach: function(f){        for(var x = Math.ceil(this.from);x <= this.to;x++){            f(x);        }    },    toString: function(){        return "("+this.from+"..."+this.to+")";    }};var r = range(1,3); //创建对象rr.include(2); //返回true,r.foreach(console.log);//console.log(r);

利用构造函数创建类

对象的创建需要通过new关键字,这就是构造函数和工厂方法的创建对象的区别

// 利用构造函数创建类//构造函数,用于初始化对象function range(from, to){    this.from = from;    this.to = to;}// 所有的对象继承自这个对象range.prototype = {    include: function(x){        return this.from <x && x<= this.to;    },    foreach: function(f){        for(var x = Math.ceil(this.from);x <= this.to;x++){            f(x);        }    },    toString: function(){        return "("+this.from+"..."+this.to+")";    }};var r = new range(1,3); //创建对象rr.include(2); //返回true,r.foreach(console.log);//console.log(r);

构造函数和类的标识

原型对象是类的唯一标示,当且仅当两个对象继承自同一个原型对象时,它们才是同一个类的实例。
构造函数的类的共有标识

constructor属性

每一个JavaScript函数都自动拥有prototype属性,这个属性的值是一个对象,这个对象包含唯一一个不可枚举的constructor属性
image

prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别。在prototype对象中又有一个constructor属性,这个constructor属性同样指向一个constructor对象,而这个constructor对象恰恰就是这个function函数本身。

new 一个对象步骤

new形式创建对象的过程实际上可以分为三步:
1. 建立一个新对象(叫A吧);
2. 将该对象(A)内置的原型对象设置为构造函数(就是Person)prototype 属性引用的那个原型对象;
3. 就是将该对象(A)作为this 参数调用构造函数(就是Person),完成成员设置等初始化工作。

其中第二步中出现了一个新名词就是内置的原型对象,注意这个新名词跟prototype对象不是一回事,为了区别我叫它inobj,inobj就指向了函数Person的prototype对象。在person的prototype对象中出现的任何属性或者函数都可以在one对象中直接使用,这个就是javascript中的原型继承了。
image

one是创建的对象

一个牛逼的链接
关于JS中的constructor与prototype

0 0
原创粉丝点击