符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个” [[Prototype]]”内部属性,这个属性所对应的就是该对象的原型。
在宽甸等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站建设 网站设计制作定制设计,公司网站建设,企业网站建设,品牌网站制作,营销型网站,外贸网站制作,宽甸网站建设费用合理。
“[[Prototype]]”作为对象的内部属性,是不能被直接访问的。所以为了方便查看一个对象的原型,Firefox和Chrome中提供了”__proto__”这个非标准(不是所有浏览器都支持)的访问器(ECMA引入了标准对象原型访问器”Object.getPrototype(object)”)。
原型是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的属性
简单来讲:构造函数是制作蛋糕的机器, 那么原型就是蛋糕的模子, 生成出来对象自然就是蛋糕啦用代码实现:
// 这个函数是制作蛋糕的机器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()