您的位置:首页 > 其它

函数的原型。。。原型链

2015-10-31 08:54 218 查看
对于这个名词一直感觉模模糊糊不是很清晰,先把理解到的写一写理清思路吧。

对象成员包括属性和方法。

一个被命名的对象成员可以包含任何数据类型。既然函数也是一种对象,那么对象成员除了传统数据类型之外,还可以包含函数。

当被命名的成员引用了一个函数,该成员就被称为一个“方法”。而引用了非函数类型的成员被称为“属性”

javascript 的对象是基于原型的。可以说,原型是其他对象的基础。原型对象被所有的实例对象共享。

对象有两种成员:实例成员和原型成员。实力成员直接存在于对象实例中,而原型成员则从对象原型中继承而来。

var book ={
title:"see you  again";
author: "Mis.wang" ;
}

console.log(book.toString()); // [object Object]


注意book的两个实例化成员是title 和 author , 并未定义toString() 方法,但是代码执行并未抛出错误。因为方法toString()是从book的原型对象继承来的。

你可以用hasOwnProperty()来判断对象是否包含特定的实例成员

console.log(book.hasOwnProperty("author") ) // true
console.log(book.hasOwnProperty("toString")) //false


要确定对象中是否包含特定的属性,可以使用in操作符。

console.log(book.in("author") ) // true
console.log(book.in("toString")) //true


使用in时,都会返回true,因为in不但搜索实例也会搜索原型。

原型链

对象的原型决定了实例的原型。所有对象都是对象Object的实例,并继承所有的基本方法,比如toString() 。你可以定义并使用构造函数来创建另一种类型的原型。

function book(who){
this.name = who ;
this.time = "1899";
};
book.prototype.author =function(){
console.log(this.name + "writed in " + this.time )
};
var book1 =new book("Tom Sawyer adventures");
book1.author(); // Tom Sawyer adventures writed in 1899

console.log(book1 instanceof book); // true
console.log(book1 instansof Object); //true


a instanceof B instanceof操作符来判断a是否是B的实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: