参考资料:
JavaScript捷径教程 (加)jonathan snook;(美)aaron gustafson;(英)stuart langridge;dan webb(著) | 郭晓刚(译) | 人民邮电出版社 | 9787115192592 | 2009-01-01
JavaScript+DOM编程艺术
JavaScript高级程序设计(中文优化版)(12)
JavaScript高级程序设计(中文优化版)(目录) 闭包(73P)对象基础(75P)
http://bbs.blueidea.com/thread-2958015-1-1.html
对象实例化机制
每当通过new关键字执行一个函数,一个新对象就会创建出来。
原型
JavaScript被称为基于原型(prototype)的语言(与基于类的语言相对),其原因在于继承是通过原型来实现的。
为了避免这种开销,JavaScript引入了一个特殊的原型属性,附在原型属性上的方法将被所有对象共享。
只有setName ()方法是加在原型上的。 因为Name属性依赖于构造函数中传入的参数,所有不能加在原型上,而要在运行时通过this关键字加入。
原型属性还有一项便利之处,就是即使在对象实例化之后,仍然可以通过原型属性给基对象添加属性,意见实例化的对象只要属于同一个原型,都会获得新加入属性。
var Person = function(){
this.name = null;
}
Person.prototype.setName = function(name){
this.name = name;
}
Person.prototype.getName = function(){
alert(this.name);
}
字面量对象
使用字面量对象是创建新对象的另一种主要手段,使用起来极为简单:
var person ={};
这样就创建好了一个对象。给对象添加属性和方法也同样简单。
var person = {
name:null,
setName:function(name){
this.name = name;
return this.name;
},
getName:function(){
alert(this.name);
}
}
任何时候都可以通过原点或者方括号给对象添加属性。
person.value=6;
person["OtherValue"]="";
person.newMethod = function(){};
子面量对象的局限时不能把它当作一个类来实例化新的对象。定义了一个字面量对象仅仅是定义了一个对象。
只能拥有一个对象也有它的好处,因为有时候恰恰就希望只能从一个中心位置进行控制(也就是常说的单例设计模式)。
在面量对象很适合作为中心访问点。
不过请记住在JavaScript里没有什么不可能的。如果你想从子面量对象创建新对象也是可以的。就是没必要那么绕。
方法连
jQuery就是一个最经典的方法连库,
var Person = function(){
this.name = null;
}
Person.prototype = {
setName:function(name){
this.name = name;
return this;
},
getName:function(){
alert(this.name);
return this;
}
}
内建对象
宿主对象
JavaScript使网页具备了“可编程”的特性。
为什么这么说:JavaScript程序通过JavaScript解释器使Html动态交换的操作
JavaScript同样也是面向虚拟机的编程,好比Java。从跨平台这个角度完全可以说JavaScript就是面向虚拟机编程。Java的最大亮点就是通过它的虚拟机可以跨任何平台和操作系统。
对象在javascript占据着重要的位置,函数是对象,数组是对象,正则表达式也是对像,所以正确的理解对象对我们掌握javascript有着至关重要的意义。
对象字面量提供了一种非常方便创建对象的方法。一个对象字面量就是一个花括号括起来的键值对。对象字面量可以出现在任何允许表达式出现的地方。