1、使用构建函数
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
这个构建函数是 JavaScript 版本的类。您会发现,它只定义了对象的属性和方法,除了没有明确创建一个对象和返回任何值和之外,它有了您期待的函数所拥有的全部功能。这里使用了this关键词,即无论是该对象的哪个实例被这个构建函数创建,它的 name 属性就是传递到构建函数形参name的值,它的 greeting() 方法中也将使用相同的传递到构建函数形参name的值。
!注:一个构建函数通常是大写字母开头,这样便于区分构建函数和普通函数。
- 用构建函数创建实例
var person1 = new Person('Bob');
var person2 = new Person('Sarah');
现在有两个对象,每一个保存再不同的命名空间里,当访问他们的属性和方法时,铜须使用person1
或者person2
来调用他们,尽管他们有着相同的name
属性和greeting()
方法,它们是各自独立的,所以功能不会冲突,注意,它们使用的是自己的name
值,这也是this
关键字的原因。
使用new
关键字跟着一个含参函数用于告知浏览器我们想要创建一个对象实例,非常类似于函数调用,并把结果保存在变量中。
2、Object()构造函数
- 首先可以使用
Object()
构造函数来创建一个新对象。是的,一般对象有构造函数,它创建了一个空的对象。
var person3 = new Object();
- 这样就在
person3
变量中存储了一个对象,然后根据需要,使用点或者括号便是法向此对象中添加属性和方法
person1.name = 'Chris';
person1['age'] = 38;
person1.greeting = function() { alert('Hi! I\'m ' + this.name + '.'); }
3、使用create()方法
JavaScript有个内嵌的方法create()
,它允许您级域现有对象创建新的对象实例。
-
var person2 = Object.create(person1);
可以看到,person2
是基于person1
创建的,它们具有相同的属性和方法。这非常有用,因为它允许您创建新的对象实例而无需定义构造函数。
如果您不太担心对旧浏览器的支持,并且您只需要一个对象的一些副本,那么创建一个构造函数可能会让您的代码显得过度繁杂。
4、使用对象的constructor属性
var person3 = new person1.constructor('xiaowang', 34);
你可以再constructor
属性的末尾添加一对圆括号(括号中包含所需的参数),从而用这个构造器创建另一个对象实例。毕竟构造器是一个函数,故可以通过圆括号调用,只需要再前面添加new
关键字,便能将此函数作为构造器使用。
网友评论