189 8069 5689

javascript原形,javascript的原型,原型链,有什么特点?

实际开发javascript 原型常用吗

在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个” [[Prototype]]”内部属性,这个属性所对应的就是该对象的原型。

在宽甸等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站建设 网站设计制作定制设计,公司网站建设,企业网站建设,品牌网站制作,营销型网站,外贸网站制作,宽甸网站建设费用合理。

“[[Prototype]]”作为对象的内部属性,是不能被直接访问的。所以为了方便查看一个对象的原型,Firefox和Chrome中提供了”__proto__”这个非标准(不是所有浏览器都支持)的访问器(ECMA引入了标准对象原型访问器”Object.getPrototype(object)”)。

javascript 原型,原型链是什么?有什么特点

原型是JS的一个引用对象,就是说prototype本身就是一个对象,和OBJECT没什么不同

所有的属性中都会包含一个属性__proto__来指向你的原型对象

例如

function ROOT(){}

ROOT.A = 1

ROOT.prototype.B = 2;

//object对象是默认指向OBJECT直到你指定一个proto指针

//这里由于child本身是已经实例化的OBJECT,所以会复制一份指定的root的prototype指针引用到child

var child = {__proto__:ROOT.prototype}

//这里是child1原__proto__是指向空的object

//这里对child1的prototype指针进行了替换

var child1 = function (){};

child1.prototype = ROOT.prototype

//剩下的结果就不说了

var chd = new child1;

console.log(child.B)

console.log(chd.B)

//你会发现除了child无法实例化,其他的特性都继承了

console.log(chd.constructor)

console.log(chd.__proto__)

console.log(child.constructor)

console.log(child.__proto__)

所以这里面

__proto__是指向的创建者的原型对象

constructor是指向的创建者

prototype是当前对象的原型对象

实例化的对象会先从实例化对象里查找属性,如果找不到会在__proto__里面查找指向的prototype的属性

如何通俗解释 JavaScript 中的原型概念

简单来讲:构造函数是制作蛋糕的机器, 那么原型就是蛋糕的模子, 生成出来对象自然就是蛋糕啦用代码实现:

// 这个函数是制作蛋糕的机器functionMakeCake(buyer){this.buyer=buyer;}// 我们选择一个9寸圆形的草莓蛋糕MakeCake.prototype={size:"9寸",shape:"圆形",taste:"草莓味 "}varstrawberryCake=newMakeCake("Jimmy");// 给jimmy做的草莓蛋糕出炉啦varstrawberryCake2=newMakeCake("Bob");// 再给Bob做一个// 我们选择一个12寸方形巧克力双层蛋糕模型MakeCake.prototype={size:"12寸",shape:"方形",taste:"巧克力",type:"双层的"}varchocolateCake=newMakeCake("Jimmy");// 给Jimmy做一个巧克力蛋糕 :)

那这个蛋糕制造机是怎么被生产出来的呢?制蛋糕的机器也是仿照一个模子通过一台机器制造机做出来的javascript内部有一个机器制造器叫做Function函数。而你可以把function CustomFunction(){...} 视为new Function(args, functionBody) 的语法糖。当你需要一台机器,你就可以使用new Function({...}),这个机器制造器Function就会按照一个默认的模子生产出一台机器。

要说明的是, 语法糖的说法并不是完全准确的,函数声明形式和new Function()不等价,new Function() 效率会低一些。

附一张原型链的图: 对象的__proto__属性指向它的原型

functionCat(name){this.name=name}varjetty=newCat()


当前标题:javascript原形,javascript的原型,原型链,有什么特点?
文章分享:http://cdxtjz.cn/article/dssjpci.html

其他资讯