面向对象的一些方法
原型函数中有些方法和属性我们也一定要知道,有时候我们需要他们来判断一些东西,以下是我们常用到一些方法:
1:toString();
2:hasOwnProperty
3:isPrototypeOf
4:propertyIsEnumerable
5:instanceof
6:Object.defineProperty
第一种(toString):它一般是用来检测内置对象的类型,它不能用来检测构造函数和对象字面两,他们检测出来的结果都是”[object Object]”,它的用法是,它一般不会单独用toString(),因为任何对象有一个toString(),
除了构造函数和对象字面量之外,它输出的结果的格式都是:
第二种(hasOwnProperty):它的作用是用来判断一个对象是否拥有自己的属性(也就是说一个属性是否是它自己的属性),如果返回值是true,那属性是他自己的,反而是false,那这属性是继承过来的.它的用法是:
因为a是它的属性,所以它输出的应该是true.
第三种(isPrototypeOf):它的作用是判断当前的对象是否是参数对象的原型对象,它也是靠返回值来判断的,返回值是true,那当前对象就是参数对象的原型,反之是false,那当前对象不是参数对象的原型函数.
实例中返回值应该是true,说明American.prototype是jaydon的原型对象.
第四种(propertyIsEnumerable):它的功能是判断对象的某个属性是否可以枚举,
可以被枚举的,返回值是true,反之为false
它还可以用来定义一个属性,那个属性可以被枚举,也可以不被枚举,取决语中间的一个属性,它要跟第六个Object.defineProperty一起用:
其中的enumerable的值决定是否能被枚举,如果为true,那定义的属性可以被枚举,反之是不能被枚举.
第五种(a instanceof b):它的功能是判断a是否b的实例:
实例中返回值是true,那apple是computer的实例.
第六种(Object.defineProperty):它的功能是可以获取和设置属性值,它里面有get和set,分别代表的是设置和获得,只有get时,是可读不可写,只有set时是可写不可读,都没有和都有的,代表可读可写.
如果你设置的35,执行set时就执行不下去了,到get时得到是0,如果设置的大于50,最后得到的就是你设置的值.
第六种还可以用来给属性重新赋值:
其中把false改为true,那就可以重新赋值.
上面就是一些常用的判断方法,这些我们经常会用到的,需要记住的.