参考 MDN网站的运算符

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new 关键字会进行如下的操作:

1)创建一个空的简单JavaScript对象(即{});
2)链接该对象(即设置该对象的构造函数)到另一个对象 ;
3)将步骤1新创建的对象作为this的上下文 ;
4)如果该函数没有返回对象,则返回this。

复现代码如下:

 <script type="text/javascript">
function Person(name,age){
this.name=name;
this.age=age;
//return this; }
Person.prototype.say=function(sth){
console.log('I Say:'+sth);
}; function _new(){
//创建一个简单的空对象
var obj={};
//获取构造函数
var _Constructor=arguments[0];
//链接到原型
obj=Object.create(_Constructor.prototype);//obj.__proto__=_Constructor.prototype;__proto__不推荐使用 见https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/proto //获取构造函数的参数列表的值
var _args=Array.prototype.slice.call(arguments,1);
//将构造函数绑定到this值(result值)
var result = _Constructor.apply(obj,_args);
//判断构造函数是否return非构造函数this的值,若是非对象则忽略返回构造函数this值,若是对象则返回构造函数return的对象
return typeof result === "object" ? result : obj;//如果返回值是一个对象就返回该对象,否则返回构造函数的一个实例对象
};
var newPerson=new Person('orgin',1);
var _newPerson=_new(Person,'my',2); console.log(newPerson);
console.log(_newPerson); var newPerson2=new Person;
var _newPerson2=_new(Person);
console.log(newPerson2);
console.log(_newPerson2);
</script>

最新文章

  1. 个人作业-Week2
  2. CSS系列:CSS文字样式
  3. ubuntu安装pip3
  4. 使用Nginx解决IIS绑定域名导致应用程序重启的问题
  5. HTML5自学笔记[ 14 ]canvas绘图基础2
  6. HDU 4902 Nice boat (线段树)
  7. poj2752 水题
  8. Python(2.7.6) 特殊方法
  9. js在以div添加滚动条
  10. 百度云BAE3.0 的ssh构造(本机ssh项目迁移到BAE3.0)
  11. 20162311 实验三 敏捷开发与XP实践 实验报告
  12. python常见的函数和类方法
  13. pl/sql学习(4): 包package
  14. sass基础—属性嵌套以及跳出嵌套 @at-root
  15. VMware进入BIOS
  16. IntelliJ IDEA 运行 Maven 项目
  17. git 命令行下浏览器tig使用记录
  18. PHP扩展开发--编写一个helloWorld扩展
  19. 第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装
  20. TSNE数据降维学习【转载】

热门文章

  1. basic
  2. 如何在docker下安装elasticsearch(上)
  3. Vue系列:滚动页面到指定位置实现
  4. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
  5. 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
  6. 史上最全面的SignalR系列教程-5、SignalR 实现一对一聊天
  7. vscode保存代码,自动按照eslint规范格式化代码设置
  8. RSA加密的java实现2(交互IOS)
  9. 解读BloomFilter算法(转载)
  10. Python: 转换文本编码