-
原型:构造函数.prototype/实例化对象.proto
自定义对象中 构造函数直接写对象的话 会造成内存浪费,创建两个对象方法是一样的 但是是不同内存地址
如果在全局创建函数,然后构造函数中赋值,可以避免内存浪费,但会造成另一个现象就是全局污染
所以我们一般通过原型添加方法,可以避免函数全局污染 内存重复浪费的问题
实例对象._proto_(一般以__开头的属性都是不希望被访问的私有属性) 属性是浏览器的隐藏(私有)属性,存在兼容问题,一般测试的时候使用,不建议通过这个属性去给原型添加属性
-
构造函数:原型.constructor
-
实例化对象:new 构造函数
实例对象找属性或方法会先从自身找,如果找不到会从原型链一层一层找,找到则返回,到最后都找不到 返回undefined
-
对象.hasOwnProperty("属性或方法名")
判断属性或方法是否是在对象本身(原型链找的不算)
返回:ture or false
-
"属性或方法名" in 对象
判断属性或方法能否访问到(原型链能找到的都算)
返回:ture or false
遍历对象自身成员:
for( var k in p){
console.log(k); //打印原型链上所有的成员
if(p.hasOwnProperty(k)){
console.log(k); //打印自身的成员
}
}
|