JavaScript面向对象编程

参考资料: 

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有着至关重要的意义。

对象字面量提供了一种非常方便创建对象的方法。一个对象字面量就是一个花括号括起来的键值对。对象字面量可以出现在任何允许表达式出现的地方。

你可能感兴趣的:(JavaScript)