对象原型

如何判断一个对象的方法是来自这个本身的还是原型的?

function Person() {
}

Person.prototype.name="Nicholas";
Person.prototype.age=29;
Person.prototype.sayName=function(){
    alert(this.name);
}

var person1=new Person();
person1.name="Greg";

var person2=new Person();

console.log(person1.hasOwnProperty("name"));//true
console.log(person2.hasOwnProperty("name"));//false

console.log("name" in person1);//true
console.log("name" in person2);//true

for (var prop in person1) {
    console.log(prop);//name   age   sayName
}

function hasPrototypeProperty(object,pro) {//如此可判断存在于原型中的属性
    return (!object.hasOwnProperty(pro))&&(pro in object);
}
console.log(hasPrototypeProperty(person1,"name"));//false
console.log(hasPrototypeProperty(person2,"name"));//true

function Person() {

}

Person.prototype.name="Nicholas";

Person.prototype.age=29;

Person.prototype.sayName=function(){

    alert(this.name);

}

var person1=new Person();

person1.name="Greg";

var person2=new Person();

console.log(person1.hasOwnProperty("name"));//true

console.log(person2.hasOwnProperty("name"));//false

console.log("name" in person1);//true

console.log("name" in person2);//true

for (var prop in person1) {

    console.log(prop);//name   age   sayName

}

function hasPrototypeProperty(object,pro) {//如此可判断存在于原型中的属性

    return (!object.hasOwnProperty(pro))&&(pro in object);

}

console.log(hasPrototypeProperty(person1,"name"));//false

console.log(hasPrototypeProperty(person2,"name"));//true

 

时间: 2024-10-24 07:03:46

对象原型的相关文章

关于js的对象原型继承

javascript中,对象的继承是通过原型去继承. 可以这样理解:js中的对象,包含的除了属性和方法,还有一个最基本的原型__proto__对象.这个原型__proto__指向谁,这个对象就继承谁.这是最容易理解对象原型继承的一种方式. 如下面的代码: var student={ name:'zhangsan', age:21, run:function(){ return this.name+' is running!'; } }; var xiaoming={ name:'xiaoming

JavaScript对象 原型

javascript对象就是一组数据和功能的集合,除原始类型(string.number.boolean.null.undefined)之外,其余都是对象. 可以通过对象直接量(字面量).new.和Object.create()(ECMAScript5)来创建对象. //new var person = new Object(); person.name = "YuanSong"; person.age = 28; //对象字面量 var person = { name : "

关于对象+原型+继承(二)

每个Javascript对象都包含着对一个原型对象的内部引用.原型对象的任何属性,都表现为每个以它为原型的方法的属性.也就是说,javascript对象可以从它的原型那里继承属性. prototype实现原理 所有的对象都可以有prototype, prototype自己也是对象,那么他也可以有prototype,这样循环下去就形成了一个prototype链, 这个链当他遇到链中队形的prototype是null时中止.(Object的默认的prototype是null) . 1 var obj

javascript 创建对象及对象原型链属性介绍

我们知道javascript里定义一个普通对象的方法,如: let obj = {}; obj.num = 1; obj.string = 'string'; obj.func = function(){alert('func')}; obj.arr = ['x','y']; console.log(obj.num); //1 console.log(obj.string); // "string" console.log(obj.func); //function(){alert('

内置对象原型的调用

发布订阅模式的publisher中有这么一句代码,将arguments转换为真正的数组 var args = Array.prototype.slice.call(arguments,0); 这种算内置对象原型的调用,可以使用: 而编码规范中要求的“不允许修改内置的对象原型”是类似下面这种 String.prototype.startsWith = function(text) { return this.indexOf(text) == 0; } arguments是个Object.它有 [0

this、对象原型

this和对象原型 第一章 关于this 1.1 为什么要用this this 提供了一种更优雅的方式来隐式"传递"一个对象引用,因此可以将 API 设计 得更加简洁并且易于复用.显式传递上下文对象会让代码变得越来越混乱,使用 this 则不会这样. 1.2 误解 1.2.1 指向自身 除了函数对象,还有更多更适合存储状态的地方. 函数表达式需要引用自身时(比如使用递归,或者定义自己的属性和方法),应当要给函数表达式具名,而不是使用arguments.callee(已经被弃用和批判的用

231 对象原型 __proto__

1.[实例]对象都会有一个属性 __proto__ 指向构造函数的 prototype 原型对象. 2.之所以我们对象可以使用构造函数 prototype 原型对象的属性和方法,就是因为对象有 __proto__ 原型的存在. 3.__proto__对象原型和原型对象 prototype 是等价的. 4.__proto__对象原型的意义,就在于为对象的查找机制提供一个方向,或者说一条路线.但是,它是一个非标准属性,因此实际开发中,不可以使用这个属性,它只是内部指向原型对象 prototype.

[js高手之路]一步步图解javascript的原型(prototype)对象,原型链

我们接着上文继续,我们通过原型方式,解决了多个实例的方法共享问题,接下来,我们就来搞清楚原型(prototype),原型链的来龙去脉. function CreateObj(uName) {             this.userName = uName;         }         CreateObj.prototype.showUserName = function(){             return this.userName;         }         va

JS创建对象模式及其对象原型链探究(五):组合使用构造函数模式和原型模式

组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性. 创建自定义类型的最常见方式,就是组合使用构造函数模式和原型模式. 1.创建对象 // 组合使用构造函数模式和原型模式 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friend = ["Jenny", "Court"]; } Person.p

原型,原型对象,原型链,构造函数,继承(二)

1.prototype(原型对象)有一个属性叫做constructor,constructor默认指向prototype(原型对象)所在的构造函数 2.constructor属性是定义在prototype上的,那就意味着可以被实例对象所继承 3.可以使用hasOwnProperty 方法来验证一个属性是自己的还是继承过来的 4.constructor的作用: 作用一:分辨原型对象到底属于哪个构造函数 instanceof() 作用二:可以从一个实例对象创建另一个实例对象 var Fun = fu