当前位置: 首页 > news >正文

上海免费建站模板杨和网站建设

上海免费建站模板,杨和网站建设,用vs2017做网站,用幽默的语言来形容网站开发JS基础之原型原型链 原型原型链构造函数创建对象prototypeprotoconstructor实例与原型原型的原型原型链其他constructorproto继承 原型原型链 构造函数创建对象 我们先使用构造函数创建一个对象#xff1a; function Person(){ } var person new Person();… JS基础之原型原型链 原型原型链构造函数创建对象prototypeprotoconstructor实例与原型原型的原型原型链其他constructorproto继承 原型原型链 构造函数创建对象 我们先使用构造函数创建一个对象 function Person(){ } var person new Person(); person.name trigger; console.log(person.name);//trigger在这个例子中Person就是一个构造函数我们使用new创建了一个实例对象person。 prototype 每个函数都有一个prototype属性比如 function Person(){} //虽然写在注释里但是你要注意 //prototype是函数才会有的属性 Person.prototype.name pig; var person1 new Person(); var person2 new Person();console.log(person1.name);//pig console.log(person2.name);//pig那这个函数的prototype属性到底指向的是什么呢是这个函数的原型吗 其实函数的prototype属性指向了一个对象这个对象正是调用该构造函数而穿件的实例的原型也就是这个例子中的person1和person2的原型。 那什么是原型呢你可以这样理解 每一个JavaScript对象null除外在创建的时候就会与之关联另一个对象这个对象就是我们所说的原型每一个对象都会从原型“继承”属性。 用一张图表示构造函数和实例原型之间的关系 这里用Person.prototype表示实例原型。 那么该怎么表示实例与实例原型也就是person和Person.prototype之间的关系呢 proto 这是每一个JavaScript对象除了null都具有的一个属性叫__proto__这个属性会指向该对象的原型。 function Person(){} var person new Person(); console.log(person.__proto__ Person.prototype);//true既然实例对象和构造函数都可以指向原型那么原型是否有属性指向构造函数或者实例呢 constructor 指向实例倒是没有因为一个构造函数可以生成多个实例但是原型指向构造函数是有的constuctor每个原型都有一个constructor属性指向关联的构造函数。 function Person(){} console.log(Person Person.prototype.constructor);//true 所以这里可以得到 function Person(){} var person new Person(); console.log(person.__proto__ Person.prototype);//true console.log(Person.prototype.constructor Person);//true console.log(Object.getPrototypeOf(person) Person.prototype);// true实例与原型 当读取实例的属性时如果找不到就会查找与对象关联的原型中的属性如果还查不到就去找原型的原型一直找到最顶层为止。 举个例子 function Person(){ } Person.prototype.name cat; var person new Person(); person.name dog; console.log(person.name);//dog delete person.name; console.log(person.name);//cat在这个例子中我们给实例对象person添加了name属性当我们打印person.name的时候结果自然为dog。 但是当我们删除person中的name属性时读取person.name从person对象中找不到name属性就会从person的原型也就是person.__proto__也就是Person.prototype中查找结果为cat。 原型的原型 如果在原型撒花姑娘还没有找到呢原型的原型又是什么呢 var obj new Object(); obj.name rabbit; console.log(obj.name);//rabbit其实原型对象就是通过Object构造函数生成的结合之前所说实例的__proto__指向构造函数的prototype,所以我们再更新下关系图 原型链 那Object.prototype的原型呢 null我们可以打印 console.log(Object.prototype.__proto__ null);//true然而null究竟代表了什么呢 null表示“没有对象”即该处不应该有值。 所以Object.prototype.__proto__的值为null跟Object.prototype没有原型其实表达了一个意思。 所以查找属性的时候查到Object.prototype就可以停止查找了。 最后一张关系图也可以更新为 其中蓝色为原型链。 其他 constructor 首先是constructor属性 function Person(){ } var person new Person(); console.log(person.constructor Person);//true当获取person.constructor时其实person中并没有constructor属性当不能读取到constructor属性时会从person的原型也就是Person.prototype中读取正好原型中有该属性所以 person.constructor Person.prototype.constructorproto 绝大部分浏览器都支持这个非标准的方法访问原型然而它并不存在与Person.prototype中实际上他是来自于Object.prototype,与其说是一个属性不如说是一个getter/setter,当使用obj.__proto__时可以理解成返回了Object.getPrototypeOf(obj)。 继承 关于继承前面提到“每一个对象都会从原型‘继承’属性”实际上继承是一个十分具有迷惑性的说法引用《你不知道的JavaScript》中的话就是 继承意味着复制操作然而JavaScript默认并不会复制对象的属性相反JavaScript只是在两个对象之间创建一个关联这样一个对象就可以通过委托访问另一个对象的属性和函数所以与其叫继承委托的说法反而更准确些。 好啦~枯燥的知识就到这里啦 欣赏一下美女壁纸放松一下心情吧~ 嘻嘻 ~
http://www.hkea.cn/news/14403428/

相关文章:

  • 全部网站北京网站外包公司
  • 做两个单页面网站大概多少钱网站推广教程优化整站
  • 潮州网站建设推广wordpress 卢松松主题
  • 笑话 语录用什么网站做软件定制开发介绍
  • 网站关键词优化排名软件系统服务器地址
  • 中山网站建设多少钱兰州人工优化
  • 相册网站建设目的网站建设分录怎么开
  • 网站注册怎么做屏蔽过滤简要说明网站建设的基本流程
  • python做网站前端重庆网站开发公司
  • 网站建设需求信息长沙网站设计的公司
  • 通付盾 建设公司网站公司网站模板源代码
  • 国外营销型网站建设有没有做高仿的网站
  • 江西南昌网站定制电商运营seo是什么
  • 数码设计网站阅读网站怎么做
  • les做ml网站网站内容编写方法
  • 网站开发用什么编辑语言好汕尾招聘网
  • 网站设计网站项目流程图网络 企业网站
  • 用网站做CAN总线通信好吗安装完wordpress第一件事
  • 广西城乡建设厅网站冷水滩城乡建设局网站
  • 网站建设报价单 excel电子商务网站策划书
  • 网站名称如何设置性价比高的域名备案加急
  • 电子商务公司网站设计专业群建设 网站
  • 做网站要不要学ps设计模板用什么软件
  • 2345浏览器网站大全宁波企业网站开发公司
  • 浙江省两学一做网站进贤网站建设
  • 做网站建设有前景吗公司网站制作申请报告
  • 解决网站提示有风险设计之家图片
  • 长沙河西网站建设从事网络销售都有哪些平台呢
  • 天津网站建站模板有什么公司做网站好
  • 服务器出租网站模板网页版梦幻西游伙伴推荐