在JavaScript中创建对象以及prototype的总结
2010-10-11 13:52
369 查看
基础知识
1. 严格上讲,在JS中只有对象没有class
2. 对象可以有独有的属性和方法。即对象的属性和方法是类的超集。
3. ECMAScript可以识别两种类型的对象。
一种叫做Native Object,属于语言范畴;
一种叫做Host Object,由运行环境提供例如document对象,Dom Node等。
Native Object是一种松散的结构,可以动态的增加、删除、修改对象的属性(property)和方法(function)。属性有一个名字和一个值,属性值可以是另一个对象的引用
或者是内建的数据类型(String, Number, Boolean, Null 或者 Undefined) 。方法有方法和方法体。
可以直接给属性(方法)指定属性值(方法体),当对象中不存在此属性(方法)时,就创建此属性(方法)。
可以调用delete obj.a删除属性或者方法。
一,关于prototype
1. prototype属性对应一个对象,他是类级别的。通过ClassName.prototype进行访问。
2. 当创建一个类的对象时,这些对象共享类的prototype属性。
3. prototype属性指向一个对象,此对象的对应类可能也有prototype属性。所以可能形成prototype链。
4. 当定义一个类时,他的prototype存在默认值。
5.
读操作会读取在对象自己和prototype 链上发现的第一个同名属性值
写操作会为对象本身创建一个同名属性(如果这个属性名不存在)。
6. ClassA.prototype=A; ClassA.prototype=B;
那么B将取代A成为ClassA的prototype。
7.
prototype属性指向的对象,可以包含属性和方法。prototype属性赋值的方法有
ClassA.prototype = objA; //直接指定对象
ClassA.prototype =
{ a:1, b:function(){} };
ClassA.prototype.a = 1; //设置
prototype属性指向对象的a属性。
ClassA.prototype.b = function(){};
//
设置
prototype属性指向对象的b方法。
说明:http://www.javaeye.com/topic/53537
二,关于创建对象
类定义有三种基本方法:
1. 工厂函数。例如
function CoFactory(){
var o = new Object;
o.a = 1 return o
}
用这种方式创建对象: var o = CoFactory();
2. 构造函数。例如
function Co(){
this.a = 1
}
用这种方式创建对象:var o = new Co()。
3. 构造函数+原型。例如
function Co(){
}
Co.prototype.a = 1;
用这种方式创建对象: var o = new Co();
类对象有静态属性和方法。可以通过ClassA.a进行访问。
1. 严格上讲,在JS中只有对象没有class
2. 对象可以有独有的属性和方法。即对象的属性和方法是类的超集。
3. ECMAScript可以识别两种类型的对象。
一种叫做Native Object,属于语言范畴;
一种叫做Host Object,由运行环境提供例如document对象,Dom Node等。
Native Object是一种松散的结构,可以动态的增加、删除、修改对象的属性(property)和方法(function)。属性有一个名字和一个值,属性值可以是另一个对象的引用
或者是内建的数据类型(String, Number, Boolean, Null 或者 Undefined) 。方法有方法和方法体。
可以直接给属性(方法)指定属性值(方法体),当对象中不存在此属性(方法)时,就创建此属性(方法)。
可以调用delete obj.a删除属性或者方法。
一,关于prototype
1. prototype属性对应一个对象,他是类级别的。通过ClassName.prototype进行访问。
2. 当创建一个类的对象时,这些对象共享类的prototype属性。
3. prototype属性指向一个对象,此对象的对应类可能也有prototype属性。所以可能形成prototype链。
4. 当定义一个类时,他的prototype存在默认值。
5.
读操作会读取在对象自己和prototype 链上发现的第一个同名属性值
写操作会为对象本身创建一个同名属性(如果这个属性名不存在)。
6. ClassA.prototype=A; ClassA.prototype=B;
那么B将取代A成为ClassA的prototype。
7.
prototype属性指向的对象,可以包含属性和方法。prototype属性赋值的方法有
ClassA.prototype = objA; //直接指定对象
ClassA.prototype =
{ a:1, b:function(){} };
ClassA.prototype.a = 1; //设置
prototype属性指向对象的a属性。
ClassA.prototype.b = function(){};
//
设置
prototype属性指向对象的b方法。
说明:http://www.javaeye.com/topic/53537
二,关于创建对象
类定义有三种基本方法:
1. 工厂函数。例如
function CoFactory(){
var o = new Object;
o.a = 1 return o
}
用这种方式创建对象: var o = CoFactory();
2. 构造函数。例如
function Co(){
this.a = 1
}
用这种方式创建对象:var o = new Co()。
3. 构造函数+原型。例如
function Co(){
}
Co.prototype.a = 1;
用这种方式创建对象: var o = new Co();
类对象有静态属性和方法。可以通过ClassA.a进行访问。
相关文章推荐
- 深入浅出Javascript(三)创建自定义对象以及属性、方法
- Javascript 创建对象方法的总结
- 深入理解JavaScript创建对象的多种方式以及优缺点
- Javascript 创建对象方法的总结
- JavaScript创建对象过程及__proto__和prototype区别
- javascript中创建对象的方式总结
- Javascript 创建对象方法的总结
- javascript创建对象总结(javascript高级程序设计)
- javascript面向对象(对象的创建以及属性和方法的添加)
- JavaScript创建对象方式总结
- JavaScript中创建类/对象的几种方法总结
- Javascript中创建对象的几种类型总结
- javascript开发:javascript面向对象、创建对象总结
- javascript高级程序设计一书----关于创建和对象继承的总结
- Javascript 创建对象总结
- JavaScript中创建对象方法总结
- javascript如何创建一个对象以及语言特点
- JavaScript总结--创建对象
- 你不知道的JavaScript--Item25 创建对象(类)的8种方法总结
- 深入浅出Javascript(三)创建自定义对象以及属性、方法