Js中判断一个属性是属于原型函数还是实例属性的方法

/**
 * 
 * 检测一个属性是实例属性还是原型属性
 * 检测完成以后,再来作操作
 * 
 */

function Person(password) {
    this.password = password;
}

Person.prototype.username = 'luohao';

let person = new Person(123);
/**
 * 可以访问到实例中的对象,也可以访问到原型中的的对象。
 */
console.log('password' in person);
console.log('username' in person);
console.log(person.hasOwnProperty('username'));
console.log(person.hasOwnProperty('password'));
/**
 * 可以通过hasOwnProperty判断一个属性是否是实例的属性
 * 但是无法判断一个实例是原型的属性,因为原型的属性在实例中可以访问到
 */
function hasOwnProperty(obejct, prop) {
    if (prop in obejct) {
        if (obejct.hasOwnProperty(prop)) {
            console.log(prop + '是实例的属性');
        } else {
            console.log(prop + '是原型的属性');
        }
    } else {
        console.log('不存在' + prop + '这个属性');
    }
}
hasOwnProperty(person, 'username');
hasOwnProperty(person, 'password');

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/81167899
今日推荐