JavaScript 对象构造器
function Person(first, last, age) { this.firstName = first; this.lastName = last; this.age = age; }
提示:用大写字母对构造器函数命名时个好习惯
这里的函数就是对象构造器函数。
通过new 关键词调用构造器函数可以创建相同类型的对象:
var myFather = new Person("tom","gate","36"); var myMother = new Person("jane","jobs","30");
this 的值,在对象中使用时,就是对象本身。
在构造器函数中,this是没有值的,它时新对象的替代物。当一个新对象被创建时,this的值会成为
这个新对象。
this不是变量,它是关键词,无法改变this的值
对对象添加属性
myFather.nationality = "USA";
这样新属性就被添加到myFather中了
对对象添加方法
myFather.name = function () { return this.firstName + " " + this.lastName; }
对构造器添加属性
person.nationality = "English";
调用时是undefined
如需向构造器添加一个新属性,必须添加到构造器函数中
function Person(first, last, age) { this.firstName = first; this.lastName = last; this.age = age; this.nationality = "USA"; //添加新属性 this.name = function() {return this.firstName + " " + this.lastName;}; //添加新函数 this.changeName = function (name) { this.lastName = name; }; // 也可以通过添加新函数修改属性 }
比如:myMother.changeName("tian");
通过 myMother 替代this,Javascript可以获知目前处理的那个person
内建的javascript 构造器
var x1 = new Object(); // 一个新的Object对象 var x2 = new String(); // 一个新的String对象 var x3 = new Number(); // 一个新的Number对象 var x4 = new Boolean(); // 一个新的Boolean对象 var x5 = new Array(); // 一个新的Array对象 var x6 = new RegExp(); // 一个新的RegExp对象 var x7 = new Function(); // 一个新的Function对象 var x8 = new Date(); // 一个新的Date对象
Math() 对象不再此列。Math 属于全局对象。new 关键字不可用于Math。
可以使用简洁的字面量方法,速度更快。
var x1 = {}; // 新对象 var x2 = ""; // 新的原始字符串 var x3 = 0; // 新的原始值 var x4 = false; // 新的原始逻辑值 var x5 = []; // 新的数组对象 var x6 = /()/; // 新的正则表达式对象 var x7 = function(){}; // 新的函数对象