JavaScript基础--原型链
2016-10-19 10:07
183 查看
JavaScript中的原型链
写在前面:这边文章主要是弄清JavaScript原型链中的一些概念,(虽然我是个小白-_-!)。可能会有一些错误,还望大家批评指正。示例代码
function People(options) { this.name = options.name; this.age = options.age; this.sex = options.sex; } People.prototype.say = function() { console.log('my name is ' + this.name); } function Student(options) { People.call(this,options); this.math = options.math; } Student.prototype = Object.create(People.prototype); Student.prototype.constructor = Student; var xiaoming = new Student({ name: 'xiaoming', age: 21, sex: 'man', math: 'A' });
这是JavaScript中的一个简单的继承,本文就针对这个例子来讨论JavaScript的原型链,话不多,上图(自己画了一个,不是特别美观。。)
问题一
为什么人们多说JavaScript中万物皆是对象,由图可知,沿着他们的原型链,最终多会到达Object.prototype。
问题二
对象都有prototype和proto属性,而对象的实例只有proto属性。
问题三
constructor(构造器属性),对于这个我的理解是,它相当于一种循环引用,例如Function.prototype.constructor = Function;
问题四
proto多指向其构造器的prototype: xiaoming.proto === Student.prototype。
问题五
为什么我们在使用for in 的时候,总是要强调要使用Object.hasOwnProperty(str)呢,因为在forin中,会沿着原型链查找。就比如上面xiaoming的例子,如果我们不使用Object.hasOwnProperty(str),遍历出来的结果会包含:constructor say。为了安全起见,在使用forin时还是最好使用Object.hasOwnProperty(str)。
相关文章推荐
- (转)【javascript基础】原型与原型链
- Javascript基础(三)原型和原型链
- javascript基础之我见(1)----深度理解原型链
- javascript基础学习系列-原型链模式
- JavaScript基础之继承与原型链
- JavaScript基础之原型对象和原型链
- 【javascript基础】原型与原型链
- JavaScript基础之继承与原型链
- 1)JavaScript面向对象的基础
- JavaScript基础的全部东东
- AJAX基础:JavaScript中类的实现
- javascript基础的动画教程,直观易懂
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->addRange 函数
- JavaScript基础知识
- javascript学习中的一些心得(基础知识,高手免进)
- Ajax基础之一:JavaScript中的用户自定义类
- JavaScript基础知识
- javascript基础的动画教程,直观易懂
- JavaScript就这么回事1:基础知识
- JavaScript(一、基础知识)