谈谈JavaScript的New关键字
2016-08-26 08:55
471 查看
原型和闭包算是JavaScript中最常见,最难以理解,最容易被当做问题的两个部分,当然还有它们的延伸,如作用域链,继承等等吧,我最近也是各种看,各种翻,记录点自己的心得,写写总会让自己的理解更深一些。(跟标题的关系不大啦,就感慨句,每次总感觉自己懂了,再翻还是收获满满)
先谈一下JavaScript中New关键字吧,通常我们通过它来创建一个类的实例对象,在JavaScript中,实例化对象之后,也就继承了类的属性以及方法。通过代码来演示一下
function Person(name){ this.name = name; } Person.age= "23"; Person.prototype.say = function(){ console.log("I'm " + this.name); }; var person= new Person("王方"); console.log( person.name, //王方 person.height //undefined ); person.say(); //I'm 王方 console.log( Person.name, //Person Person.age//23 ); Person.say(); //Person.say is not a function
我们看下这一行
var person= new Person("王方");
new 到底做了什么呢?恩 JS引擎做的工作就是下面这样
var obj = {}; obj.__proto__ = Person.prototype; var result = Person.call(obj,"王方"); return typeof result === 'obj'? result : obj;
1.首先创建一个新对象
2.把obj的__proto__ 指向Person的原型对象prototype,此时便建立了obj对象的原型链:obj->Person.prototype->Object.prototype->null
3.在obj对象的执行空间调用Person函数并传递参数“王方”。 相当于var result = obj.Person("王方")。当这句执行完之后,obj便产生了属性name并赋值为"王方"。
4.判断返回值,如果无返回值或者返回一个非对象值,就将obj返回,否则讲返回值作为新对象返回(有点绕口,三元运算符,自己看下吧)
总结:
Javascript的new关键字主要的作用是继承,如上例子所言,但是要记住一点,Person是一个函数,而person是一个对象,至于函数与对象之间的区别,我有时间再写吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Javascript new关键字的玄机 以及其它
- 不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
- JavaScript基础 使用new关键字和Array()来创建空数组 并 不按顺序来添加元素
- 《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例
- Javascript new关键字的玄机 以及其它
- JavaScript基础--new关键字
- javaScript使用new关键字时发生了什么?
- Javascript的实例化与继承:请停止使用new关键字
- Effective JavaScript Item 33 让构造函数不再依赖new关键字
- 我的Javascript之旅——new关键字的玄机,以及其它
- javascript-new关键字
- javascript中new关键字详解
- 不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
- 理解javascript的new关键字
- javascript new关键字做了什么
- javascript中new关键字详解
- javascript中new关键字详解
- javascript关键字new
- JavaScript的实例化与继承:请停止使用new关键字(转自infoQ)
- 我的Javascript之旅——new关键字的玄机,以及其它