new运算符

JavaScript中,new是一个语法糖,可以简化代码的编写,可以批量创建对象实例。

语法糖Syntactic sugar,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

实例

假如我们不使用new,来初始化创建10个student对象实例

var stuGroup = [];
for(let i=0;i<10;++i){
var obj = {
name: i,
hp: 100,
mp: 1000,
power: 100,
defense: 100
}
stuGroup.push(obj);
}
console.log(stuGroup);

此时得到了10个初始化的student对象实例,假如使用new关键字可以简化操作,还可以使用原型链来共享属性等操作。

function Student(i){
this.name = i;
this.hp = 100;
this.mp = 1000;
this.power = 100,
this.defense = 100;
}
Student.prototype.from = "sdust";
var stuGroup = [];
for(let i=0;i<10;++i){
stuGroup.push(new Student(i));
}
console.log(stuGroup);

new运算符的操作

  1. 创建一个空的简单JavaScript对象(即{})
  2. 链接该对象(即设置该对象的构造函数)到另一个对象
  3. 将步骤1新创建的对象作为this的上下文
  4. 如果该函数没有返回对象,则返回this
function _new(base,...args){
var obj = {};
obj.__proto__ = base.prototype;
base.apply(obj,args);
return obj;
}
function Student(i){
this.name = i;
this.hp = 100;
this.mp = 1000;
this.power = 100,
this.defense = 100;
}
Student.prototype.from = "sdust";
var stuGroup = [];
for(let i=0;i<10;++i){
stuGroup.push(_new(Student,i));
}
console.log(stuGroup);

相关

原型与原型链
https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/%E5%8E%9F%E5%9E%8B%E4%B8%8E%E5%8E%9F%E5%9E%8B%E9%93%BE.md
apply、call、bind
https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/apply%E3%80%81call%E3%80%81bind.md

最新文章

  1. mycat高可用方案
  2. PYTHON seek()tell()语句
  3. Java设计模式—生产者消费者模式(阻塞队列实现)
  4. 网页绘制图表 Google Charts with JavaScript #1....好强、好简单啊!
  5. P2P编程(十)
  6. 01_JavaMail_01_邮件服务器简述
  7. AeroGear.js 1.2.0 发布,手机Web应用脚手架 - 开源中国社区
  8. 《Linux设备驱动开发具体解释(第3版)》进展同步更新
  9. Android 它们的定义ContentProvider和ContentObserver充分利用
  10. 解决oracle数据库连接不上的问题
  11. setTimeout异步加载
  12. git 简易使用说明
  13. Java多线程其他
  14. EasyARM i.mx287学习笔记——通过modbus tcp控制GPIO
  15. sql复杂案例
  16. 海思编译链编译出现__aeabi_unwind_cpp_pr1重定义怎么回事
  17. 基本数据类型的包装类(Interger)
  18. mysql 8.0 ~ innodb与变量优化
  19. arm 算力运算
  20. android手机如何获取手机号

热门文章

  1. CSAPC08台湾邀请赛_T1_skyline
  2. Django学习之路02
  3. Logback 标准xml参考
  4. zookeeper 实战 - Pymjer 的博客
  5. 基于USB接口芯片CH372的人机接口设备设计与实现(转)
  6. [置顶] Python 使用itchat 对微信好友数据进行简单分析
  7. ado.net DataSet
  8. 【Java】Map总结和源码注释
  9. VMware安装CentOS6.X 系统
  10. python数据分析工具 | numpy