1:在javascript中,函数也是一种对象,所以他也可以有属性和方法。
2:定义一个类,实际上是定义一个构造函数。通常遵循的规范是函数名大写,
但这个只是大家的一中习惯性的编程规范,不是必须的。当然你也可以小
写。
3:对象的属性有以下几种写法:
a:直接在对象上添加,格式: xxobject.xxprop = 属性值
xxobject表示某一个对象,xxprop表示要添加的新属性。
例: var person = new Object();
person.name="sam";
alert(person.name); //值为sam;
上面的例子表示给person对象添加一个新的属性name并辅值为sam.
b: 通过构造函数定义类属性.格式:
function classname(){
this.xxprop1 = xxvalue1;
this.xxprop2 = xxvalue2;
}
xxprop1 属性1;
例:
function Person(){
this.name = 'sam';
this.sex = '男';
}
var person = new Person();
alert(person.name) //值为sam;
c: 通过构造函数的prototype对象添加属性 ,格式:Class.prototype.xxprop= value;
Class表示某构造函数,prototype是构造函数对应的prototype对象.每一个构造函数
都有一个名位prototype的对象.
例:
function Person(){ };
Person.prototype.name = 'sam';
Person.prototype.sex = "男";
var person = new Person();
alert(person.name) //值为sam;
注意:用构造函数体内定义的属性(如b: this.xxprop1=xxvalue1;) 与在函数的prototype
对象里添加属性的方式有什么区别?
主要区别在于:构造函数体内定义的属性每次new一个新的对象时,都会在内存中创建这些属性
的副本,而prototype里添加的属性则不会,它们在内存中始终只有一份.不会因为对象的创建,
存在对分属性的内存空间.但是他们的访问方式都是一样的,都是通过对象名点属性名的方式
(person.name).
d: 通过对象直接量的方式添加对象属性.格式: var objectName={xxprop1:xxvalue,
xxprop2:xxvalue2};
我们知道javascript创建一个对象,有三种方式:
第一种:通过Object函数创建.如:var person = new Object();
然后通过上面a的方式加入属性值如: person.name = 'sam';
第二种: 通过定义构造函数来创建.如上b方式.如: person = new Person();
第三种方式:通过对象直接量创建. 比如:
var person = {name:'sam',sex:'man',age:18};
即:大括号内写入 属性 冒号 值 ,即可.