原型、原型链、继承、
在 JS 中,一切皆对象! 下面就让我们从创建对象开始,逐步学习JS中的核心知识: 原型,原型链,继承等
创建对象
// 1. 字面量方式创建对象 : var obj = {} ;
var obj1 = {
name : "张三",
age:13,
sayHello : function () {
alert("hello")
}
};
// ---------------------------------------
// 2. 使用 new Object () 的方式创建对象
var obj2 = new Object();
obj2.name = "张三";
obj2.age = 13;
obj2.sayHello = function () {
alert("Hello")
}
// ---------------------------------------
// 3. 使用 function 构造函数创建对象
function Person() {
this.name = "张三";
this.age = 13 ;
this.sayHello = function () {
alert("Hello")
}
}
var obj3 = new Person();
obj3.sayHello();
// ---------------------------------------
// 4. 使用 Object.create() 创建对象
var obj4 = Object.create(Object.prototype,{
name:{
value: "张三"
},
age:{
value:13
},
sayHello: {
value: function () {
alert("Hello");
}
}
});
obj4.sayHello ();
Object 对象 和 Function 对象
// 接着上面的代码写
console.log(typeof obj1); // object
console.log(typeof obj2); // object
console.log(typeof obj3); // object
console.log(typeof obj4); // object
console.log(typeof Person); // 输出 function
在 JS 中最常见的对象类型就是 Object 和 Function 。Object 是通过 new Object () 方式(或者其变种) 创建的, 而 Function 对象 是通过 new Function() 方式创建的。 function (){} 定义的函数是隐式的 new Function()。
构造函数
构造函数可以说是一个普通的函数。 通过构造函数可以创建对象 ,任何函数都可以被看做 构造函数
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() { alert(this.name) }
}
var person1 = new Person('Zaxlct', 28, 'Software Engineer');
var person2 = new Person('Mick', 23, 'Doctor');
函数对象的原型对象
每个函数对象都会被分配一个属性 "prototype",通过这个属性可以得到 函数对象的原型对象。