函数的原型。。。原型链

对于这个名词一直感觉模模糊糊不是很清晰,先把理解到的写一写理清思路吧。

对象成员包括属性和方法。
一个被命名的对象成员可以包含任何数据类型。既然函数也是一种对象,那么对象成员除了传统数据类型之外,还可以包含函数。
当被命名的成员引用了一个函数,该成员就被称为一个“方法”。而引用了非函数类型的成员被称为“属性”


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的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值