0.前提
JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中.
根据上述, 检测属性的时候会出现4种情况
既不存在实例中, 也不存在原型对象中
存在实例中, 不存在原型对象中
不存在实例中, 存在原型对象中
既存在实例中, 也存在原型对象中
1.hasOwnPrototype()
hasOwnPrototype()接受一个字符串格式的属性名称, 如果实例本身存在该属性(情况2/情况4), 返回true. 否则, 返回false(情况1/情况3).
functino Person() {} Person.prototype.name = 'apple'; var person1 = new Person(); var person2 = new Person(); person1.name = 'banana'; console.log(person1.hasOwnPrototype(name)); //true console.log(person2.hasOwnPrototype(name)); //false
2.in操作符
in操作符无论属性是存在实例本身中, 还是原型对象中, 就会返回true(情况2/情况3/情况4); 否则, 返回false(情况1).
console.log('name' in person1); //true console.log('name' in person2); //true
3.检测存在原型的属性
结合in操作符和hasOwnProperty()就可以自定义函数来检测原型中是否存在给定的属性.
function hasPrototypeProperty(object, name) { return !object.hasOwnPrototype(name) && (name in object); } console.log(hasPrototypeProperty(person1, 'name')); //false console.log(hasPrototypeProperty(person2, 'name')); //true
原型中存在给定属性, 返回true(情况3). 否则返回false(情况1/情况2/情况4).
以上就是本文的全部内容了,希望大家能够喜欢
本文向大家介绍js实例属性和原型属性示例详解,包括了js实例属性和原型属性示例详解的使用技巧和注意事项,需要的朋友参考一下 详情请仔细研读注释,这里就废话少说,直接上代码了。 小伙伴们是否看明白了,了解了实例属性和原型属性了吗?本文讲述的非常的详细,推荐给大家,希望对小伙伴们能有所帮助
本文向大家介绍JavaScript中关联原型链属性特性,包括了JavaScript中关联原型链属性特性的使用技巧和注意事项,需要的朋友参考一下 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值。 4个描述的行为特性: writable 表示能否修改属性的值。默认为true Enumerable 表示能否过过for in循环返回属性是否可以枚举。 configuralbe 表示是
由于Python是动态语言,根据类创建的实例可以任意绑定属性。 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(self, name): self.name = name s = Student('Bob') s.score = 90 但是,如果Student类本身需要绑定一个属性呢?可
主要内容:类变量(类属性),实例变量(实例属性),局部变量无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。我们可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 前面章节提到过,在类体中,根据变量定义的位置不同,以及定义的方式不同,类属性又可细分为以下 3 种类型: 类体中、所有函数之外:此范围定义的变量,称为类属性或类变量; 类体中,所有函数内部:以“self.变量名”的方式定义的
问题内容: 我是python的新手,了解到类属性就像C ++中的静态数据成员一样。但是,尝试以下代码后,我感到困惑: f2.a是否也等于5? 如果将a定义为列表而不是整数,则预期行为: 我研究了 Python:类和实例属性之间的区别,但是它不能回答我的问题。 谁能解释为什么会有所不同?谢谢 问题答案: 在第二个示例中,您没有做相同的事情。在第一个示例中,您要分配一个新值: 在第二个示例中,您只是在
js的类包含 静态属性和实例属性 静态方法和实例方法 请问什么场景应该把这个属性定义为静态的,什么场景应该为实例的? 请问什么场景应该把这个方法定义为静态的,什么场景应该为实例的?我能想到的是类似于Integer.parse()之类的静态方法,我恍惚能理解静态方法的使用场景,但是,还是没有那种概括性的思路。 感谢大佬~~