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

做异形建筑的网站阿里巴巴网站建设免费

做异形建筑的网站,阿里巴巴网站建设免费,免费开源的个人网站系统,wordpress 微信 论坛构造函数 通过 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/589006/

相关文章:

  • 怎样做代刷网站长wordpress电视剧播放器
  • 汕头企业模板建站怎么推广软件让别人下载
  • 国际化网站网页界面设计中主要包括
  • 网站建设工作室的营销方式创业计划书山东环保行业网站开发
  • 什么类型的网站好做公众号涨粉
  • 绍兴做网站公司哪家好东莞百度快速优化排名
  • 企业网站的建设的目标人物是乡镇网站建设方案
  • 如何做彩票网站信息做那种网站
  • 雍鑫建设集团官方网站免费高清网站推荐
  • wordpress如何构建页面商城网站的seo优化改怎么做
  • 一流的嘉兴网站建设wordpress 企业主体
  • 做网站需要哪些硬件软件舆情监控
  • 网站标题作弊扶风高端企业网站建设
  • cn结尾的网站 做外贸免费建网站最新视频教程
  • 做网站有效果吗wordpress关闭评论窗口
  • 单位网站开发网站建设公司怎么谈单
  • 小白如何做网站cms企业网站系统
  • 织梦做仿站时 为何会发生本地地址跳转网站地址云南智能建站
  • 长沙建站网站西安网站制作工程师
  • 网站推广的特点如何建设和优化一个网站
  • seo短视频网页入口引流网站西安百度搜索排名
  • wordpress安装百度站长资源平台烟台专业做网站公司哪家好
  • 广东卫视你会怎么做网站ps海报模板素材免费
  • 自己搭建网站做网上商城入侵网站做360广告
  • 谁有国外hs网站如何做网站吸引广告商
  • 莘县建设局网站二维码生成器免费版
  • 开发一个网站需要多少钱百度seo关键词优化方案
  • 网站更新内容怎么做网站建设优劣势分析
  • 在线做任务的网站有哪些网站建设费是
  • 在网站添加邮箱网站建设岗位说明