最近进入现场开发环节了,首先的工作是对JS脚本文件的整理和部分重写,因此算是扎扎实实看了一下javascript相关的知识,采用的库是jQuery,里面部分使用了面向对象的思想在里面,据说javascript的对象和闭包是其比较重要的两个方面,根据这几天的javascript方面的学习及实践,主要记录一下javascript中得面向对象的知识。
1、对象的创建方式
javascript的对象的创建,可以通过如下的三种方式来进行:
A、通过Object对象;
直接通过Object对象来创建对象的示例代码如下:
var person = new Object(); person.id = '001'; person.name='zhangsan'; person.age = 24; person.print = function() { return "my name is " + this.name + ", i am " + this.age + " years old! My id is "+ this.id; } person.print();
这应该是最常用,最直观的一种创建对象方法,但是它的缺点太明显了,就是代码复用度很低。在真实项目代码中,应该使用复用度更好的方式来创建对象。
B、通过构造函数;
通过构造函数创建javascript中的对象,相比于通过Object直接来创建对象,复用度相对来说有了一定得改进,具体的示例代码如下:
function Person() { var _this = this; var age = 18; var name = "zhangsan"; this.setAge = function(_age) { age = _age; } this.getAge = function() { return age; } this.setName = function(_name) { name = _name; } this.getName = function() { return name; } } var person = new Person(); person.setAge(26); person.setName('Aries'); $('#age').val(person.getAge());
不过这里需要更加注意的是this这个关键字,function Person中得变量,如果通过var定义则为类似Java等语言中的私有变量,外部不能访问,反之则为公有变量,而Person中得方法,则如果用this.getAge类似的则为公有方法,反之则为私有方法,在实际使用中需要特别注意。
C、通过对象的初始化:
通过对象的初始化方法来创建对象也是一个常用的对象创建方法,具体示例代码如下所示:
var Comp = { id: '001', name: 'zhangsan', age: 24, print: function() { alert("My name is " + this.name + ", I am " + this.age + " years old! My id is " + this.id); } } Comp.print();