如果看了上一小节的最后一个例子,对自定义的“类”应该比较熟悉了。在javascript中,可以说没有方法,因为函数和字符串一样也是种数据类型,但类中的函数可以用this关键字。下面我说的类的属性可以是方法,也可以指字段。在一个自定义“类”中有中有几个地方可以定义属性。 a、函数名中直接定义。 如Person.name。在这定义相当于类名的属性。静态的,访问的时候必须用Person.name来访问,不能用new Person().name访问,也访问不到。 b、构造函数的this.中。当你用new function()时,这些属性就是你所持对象的属性。用new Person().属性 来访问。 c、构建好对象以后,给对象增加属性。和构造函数中的属性使用类似。 d、函数名的prototype中 e、父类或Object 的prototype中。
(1)对象属性优先级通过运行以下代码,我们访问对象属性优先级如下:c>b>d>ec种属性必须在定义以后访问才有效。a种属性实例访问不到。javascrpt语言预定义的属性不能用for in 得到。如toString
(2)prototype属性是只读的看如下代码,你不要试图通过变量改变原型对象的属性。你也不可能改变,你只会通过c模式给对象增加一个属性。另外原型对象是所有实例共享的。理论上也不可以改变。