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

有哪些可以做调查的网站微信群网站有哪些

有哪些可以做调查的网站,微信群网站有哪些,合肥网站设计建设公司,沈阳网站建设q479185700惠构造函数 通过 new 函数名 来实例化对象的函数叫构造函数。 任何的函数都可以作为构造函数存在。之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数的主要 功能为 初始化对象,特点是和new 一起使用。new就是在创建对象&#x…

构造函数

通过 new 函数名 来实例化对象的函数叫构造函数。
任何的函数都可以作为构造函数存在。之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数的主要 功能为 初始化对象,特点是和new 一起使用。new就是在创建对象,从无到有,构造函数就是在为初始化的对象添加属性和方法。构造函数定义时首字母大写(规范)。

function Person(name) {this.name = name;
}let p1 = new Person('张三'); // 实例化console.log(p1); // Person {name: "张三"}

此时,p1就是一个新对象。

1. new一个新对象的过程,发生了什么?

  1. 创建一个空对象obj {}
  2. 空对象的_proto_指向了构造函数的prototype成员对象
  3. 使用apply调用构造器函数,属性和方法被添加到 this 引用的对象中
  4. 如果构造函数中没有返回其它对象,那么返回 this,即创建的这个的新对象,否则,返回构造函数中返回的对象

对new理解:new 申请内存, 创建对象,当调用new时,后台会隐式执行new Object()创建对象。所以,通过new创建的字符串、数字是引用类型,而是非值类型。

2. 手写new函数

function _new(func, ...args) {// 1. 创建空对象let obj = {};// 2. 空对象的_proto_指向了构造函数的prototype成员对象obj.__proto__ = func.prototype; // 一二步合并就相当于 let obj = Object.create(func.prototype)// 3. 使用apply调用构造器函数,属性和方法被添加到 this 引用的对象中let result = func.apply(obj, args);// 4. 确保 new 出来的是个对象return typeof result === 'object' ? result : obj;
}

测试用例:

function Person(name, age) {this.name = name;this.age = age;
}let obj = _new(Person, 'xia', 20);console.log(obj); // Person {name: "xia", age: 20}

3. 构造函数上的方法

  1. 在构造函数上直接定义方法(不共享)
function Person() {this.say = function () { // 直接定义方法console.log('hello');}
}let p1 = new Person();
let p2 = new Person();
p1.say(); // hello
p2.say(); // helloconsole.log(p1.say === p2.say); // false

很明显,p1 和 p2 指向的不是一个地方。 所以 在构造函数上通过 this 来添加方法的方式来生成实例,每次生成实例,都是新开辟一个内存空间存方法。这样会导致内存的极大浪费,从而影响性能

  1. 通过原型添加方法(共享)

构造函数通过原型分配的函数,是所有对象共享的。

function Person(name) {this.name = name;
}
Person.prototype.say = function () { // 通过原型添加方法console.log('hello ' + this.name);
}let p1 = new Person('张三');
let p2 = new Person('李四');
p1.say(); // hello 张三
p2.say(); // hello 李四console.log(p1.say === p2.say); // true

所以我们经常 将公共属性定义到构造函数里,将公共方法放到原型对象上

点击查看“构造函数的五种继承方式”

http://www.yayakq.cn/news/885687/

相关文章:

  • 罗定网站建设网站流量图怎么做
  • 郑州的建设网站有哪些手续费wordpress资源站源码
  • 免费看片网站网站建设单子
  • 永春网站建设如何使用表格做网站
  • 慈溪网站建设网站评测的作用
  • 用jsp做的网站首页手机怎么修改网页内容
  • 心悦dnf免做卡网站做网站商城的小图标软件
  • 建设公司的网站制作上海做公司网站的公司
  • 企业网站建设市场前景北京的建筑公司有哪些
  • 嘉兴做网站涪陵网站建设公司
  • 刚做的网站为什么百度搜不出来网站建设武清
  • 大连网站建设哪家公司好电商代运营十大公司排名
  • qq钓鱼网站生成器手机版怎么注销网站备案
  • 百度怎么做网站域名html是静态网站
  • 网站建设及网页设计教案淘客网站让别人做
  • 凤岗金属制品东莞网站建设技术支持网站怎么设关键词
  • 合肥seo网站建设费用沈阳做企业网站的
  • 赛罕区城乡建设局网站wordpress 时光网
  • 我的专业网站建设策划书营销型网站一个多少钱
  • 获取网站缩略图的asp代码网站开发语言怎么选
  • 管网建设网站wordpress邮箱评论
  • 做家教网站资质东莞常平二手房
  • 做黑网站赚钱吗九宫格导航网站
  • 收废铁的做网站有优点吗惠州市跨境电子商务网站开发
  • 网站模型怎么做的网站设计论文范文大全集
  • 世界上有一个wordpress站点网页界面设计中常用的中英文字体有哪些
  • 长沙商业网站建设公司网站建设价位
  • 颜色选取网站网站建设案例完整代码
  • 天津做企业网站公司深圳赶集同城网站建设
  • 学习网站大全千图app的优势