我们经常会用JS的构造函数实现Java语言中的继承,今天整理一下构造函数的相关属性及说明。
下面定义一个构造函数:
1
2
3
4
5
|
function
Person(name, sex, age) {
this .name = name;
this .sex = sex;
this .age = age;
} |
以上面这个构造函数为例梳理一下构造函数的相关属性,如下表:
属性名
|
说明
|
__defineGetter__ | 用于追加定义getter方法,继承自Object |
__defineSetter__
|
用于追加定义setter方法,继承自Object
|
__lookupGetter__
|
获取getter属性,ES5 getOwnPropertyDescriptor |
__lookupSetter__
|
获取setter属性,getPrototypeOf
|
apply、call、bind
|
调用当前方法,以另外的对象替代当前对象 |
aguments
|
调用该函数时传入的参数
|
caller |
获取调用当前函数的函数
|
length
|
获取为一个函数定义的参数数目
|
name
|
函数名称
|
propertyIsEnumberabel
|
属性是否可枚举
|
prototype
|
输出格式是构造函数名 原型
|
toLocaleString
|
转化成本地化字符串
|
toString
|
转化成字符串
|
valueOf
|
转化成原始值(string number null undefined boolean)
|
__proto__
|
原型链:私有属性(FF暴露为共有属性):实例化对象拥有该属性 |
constructor
|
构造函数
|
通过上述实例理解主要属性的使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//创建Person的原型 Person.prototype = { sayHello: function () {
alert( ‘Hello‘ );
}
} //实例化,可以实例化多个对象 var
danny = new
Person( ‘Danny‘ , ‘male‘ , 18);
var
jenny = new
Person( ‘Jenny‘ , ‘female‘ , 24);
Person.prototype.isPrototypeOf(danny) //true,说明danny继承了Person的属性
danny .constructor //Person
Person.constructor //Function
var
tom = {};
danny.sayHello.apply(tom); //tom也能使用danny的sayHello
danny.__proto__ == Person.prototype //__proto__ 可以理解为对象的父对象
|
想要了解更加详细的讲解,可以查看参考资料的讲解~
参考资料:
http://msdn.microsoft.com/zh-cn/library/x844tc74(v=vs.94).aspx
http://www.douban.com/note/293217333/