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

网页美工设计网站东莞网站建设推广服务

网页美工设计网站,东莞网站建设推广服务,京东网上商城首页,99建筑网99建设工程教育网上文,通过基本的对象创建问题了解了构造函数#xff0c;本文#xff0c;我们接着上文继续了解构造函数的基本特性#xff0c;以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说#xff0c;是原型上的#xff0c;对象是通过查找到原型找到 constructor属性… 上文,通过基本的对象创建问题了解了构造函数本文我们接着上文继续了解构造函数的基本特性以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说是原型上的对象是通过查找到原型找到 constructor属性 ).后面讲到原型的时候我会用示意图的方式说明 1 function CreateObj(uName) {2 this.userName uName;3 this.showUserName function () {4 return this.userName;5 }6 }7 var obj1 new CreateObj(ghostwu);8 var obj2 new CreateObj(卫庄);9 console.log( obj1.constructor CreateObj ); //true 10 console.log( obj2.constructor CreateObj ); //true 默认情况下对象的constructor等于实例化对象的构造函数, constructor最初的作用是用来标识对象的但是并不是特别准确因为constructor能被修改, 识别对象一般用instanceof关键字. 什么是instanceof 要理解这个关键字需要搞清楚原型链这里我提前把他放出来 //假设instanceof运算符左边是L右边是R L instanceof R //instanceof运算时通过判断L的原型链上是否存在R.prototype L.__proto__.__proto__ ..... R.prototype //如果存在返回true 否则返回false 注意instanceof运算时会递归查找L的原型链即L.__proto__.__proto__.__proto__.__proto__...直到找到了或者找到顶层为止。 所以一句话理解instanceof的运算规则为 instanceof检测左侧的__proto__原型链上是否存在右侧的prototype原型。 console.log( obj1 instanceof Object ); //trueconsole.log( obj2 instanceof Object ); //trueconsole.log( obj1 instanceof CreateObj ); //trueconsole.log( obj2 instanceof CreateObj ); //true obj1,obj2之所以是Object的实例因为所有对象继承自Object 借用构造函数 一个空对象可以借用现有的构造函数完成属性和方法的复制 1 function CreateObj(uName) {2 this.userName uName;3 this.showUserName function () {4 return this.userName;5 }6 }7 var obj new Object();8 CreateObj.call( obj, ghostwu );9 console.log( obj.userName ); //ghostwu 10 console.log( obj.showUserName() ); //ghostwu 构造函数的优点与缺点 优点就是能够通过instanceof识别对象缺点是每次实例化一个对象都会把属性和方法复制一遍 1 var obj1 new CreateObj(ghostwu); 2 var obj2 new CreateObj(卫庄); 3 4 console.log( obj1.showUserName obj2.showUserName ); //false 从以上执行结果可以看出obj1.showUserName和obj.showUserName不是同一个【在js中引用类型比较的是地址, 函数是一种引用类型】而是存在两个不同的内存地址因为每个对象的属性是不一样的这个没有什么问题但是方法执行的都是一样的代码所以没有必要复制存在多份浪费内存.这就是缺点 怎么解决构造函数的方法复制多次的问题 1 function CreateObj(uName) {2 this.userName uName;3 this.showUserName showUserName;4 }5 function showUserName (){6 return this.userName;7 }8 var obj1 new CreateObj(ghostwu);9 var obj2 new CreateObj(卫庄); 10 console.log( obj1.showUserName obj2.showUserName ); //true 把对象的方法指向同一个全局函数showUserName, 虽然解决了多次复制问题但是全局函数非常容易被覆盖也就是大家经常说的污染全局变量. 比较好的解决方案 通过原型(prototype)对象把方法写在构造函数的原型对象上 1 function CreateObj(uName) { 2 this.userName uName; 3 } 4 CreateObj.prototype.showUserName function(){ 5 return this.userName; 6 } 7 var obj1 new CreateObj(ghostwu); 8 var obj2 new CreateObj(卫庄); 9 console.log( obj1.showUserName obj2.showUserName ); //true 什么是原型对象以及原型链且听下回分解 转载于:https://www.cnblogs.com/ghostwu/p/7434609.html
http://www.pierceye.com/news/984386/

相关文章:

  • 潍坊cms建站系统wordpress 朴素
  • 网站建设方面的课程国外 图片网站
  • 网络哪里能接活做网站新浦网站制作网站建设
  • 新手自己做网站凡科网建设网站如何修改源代码
  • 做自媒体发视频用哪些网站贵州网站建设联系电话
  • 可以提供排版的网站友情链接怎么弄
  • 优秀网站建设空间海口 网站建设
  • 设计网站页面出现问题九江哪家网站建设公司好
  • 深圳做企业网站的公司成都公司展厅
  • 两学一做 网站t型布局网站怎么做
  • 论坛网站建设联系方式成都网站设计制作价格
  • 网页网站建设的ppt模板下载响应式网站项目
  • 做网站在哪里可以找到高清壁纸北京响应式网站
  • 企业网站建设门户网站建设费的摊销年限
  • 模板网站的域名是什么网站源代码程序
  • 网站空间多久续一次费长春网站制作设计
  • 网站制作价格低广西网络电视
  • 平台网站建设收费烟台网站的优化
  • 如何做提卡网站vue.js wordpress
  • 国家网站备案查询系统wordpress 主题 简洁
  • 建设商业网站html什么意思
  • 网站专题建设方案江苏省建设厅网站 杨洪海
  • 通化网站建设公司南江县住房和城乡建设局网站
  • 网站的外链是什么软件开发与网站开发的区别
  • 学做网站论坛vip账户了解网站开发的背景
  • 做3个网站需要多大的服务器科凡建站
  • 网站设计制作音乐排行榜44555pd永久四色端口
  • 网站优化方案教程如何注册chn域名网站
  • 怎样建设免费网站个别网站网速慢怎么做
  • 网页设计制作音乐排行榜一键seo提交收录