标签:
var robot = { name: ‘Robot‘, height: 1.6, run: function () { console.log(this.name + ‘ is running...‘); } };
这一段代码 , 声明了一个对象robot . 这个对象有姓名 , 身高(属性) , 还有自己的行为(方法) . 如果我们能根据这一个对象来建立另一个对象该是多么美好的事情呀 .
有需求就有产出 . 所以请看下面的代码 . 我们可以根据已经有的 "实例" 来声明一个新的 "实例" .
var Student = { name: ‘Robot‘, height: 1.2, run: function () { console.log(this.name + ‘ is running...‘); } }; var xiaoming = { name: ‘小明‘ }; xiaoming.__proto__ = Student;
可以看出 , 我们先写了一个Student的实例 , 然后谢了一个xiaoming的实例 . 最后我们讲小明的原型 (prototype) 指向了 Student . xiaoming有自己的name属性 , 但是没有run方法 , 然后从Student中继承下来 , 得到了 Student的run方法.
除了直接用 {...} 来创建一个对象之外 . Js 还有一种利用构造方法 , 来创建对象的方法 . 首先我们定义一个构造函数 .
function Student(name) { this.name = name; this.hello = function () { alert(‘Hello, ‘ + this.name + ‘!‘); } }
... 这个是不是有点像普通的函数 ? 但是普通函数是不能直接写this的会报错 . 我们可以通过一个关键词 new 来调用这个函数将函数转变为 构造函数 , 然后去声明一个对象. .
var xiaoming = new Student(‘小明‘); xiaoming.name; // ‘小明‘ xiaoming.hello(); // Hello, 小明!
如果我们不写new 的话 this是指向undefined的 . 然后xiaoming.name也只会返回一个undefined . 但是如果我们写了new 这个普通的函数就会变成一个构造函数 . 然后在函数的末尾自动加上一个 . return this;
标签:
原文地址:http://www.cnblogs.com/A-FM/p/5874051.html