函数
1. 工厂
工厂跟构造函数的区别:
1.首字母小写
2.函数中没有使用this
3.使用的时候没有用new
<script>
/*
空对象,Object是所有对象的祖先
比如:学生继承人类,人类就会继承Object
*/
var obj = new Object();
console.info(obj);
/*
s可以动态的添加属性
*/
obj.name = "flash boy";
console.info(obj);
</script>
2. 构造函数
-以大写字母开头,可以用来创建对象。
-只要通过new操作符来调用,就可以作为构造函数。
缺点:如果对象需要定义很多方法,那么就要定义很多个全局函数。
3. 原型模型
创建的每个函数都有一个prototype原型属性(默认值)。
好处:可以让所有对象都共享它包含的属性和方法。
4. 构造原型方式(套路)
<script>
//创建类
//1.属性全部放在构造函数里面
//2.方法写在外面(prototype)
function Student(name) {
this.name = name;
}
Student.prototype.study = function() {
console.info(this.name + "惊呼:好好学习,天天向上");
}
var stu = new Student("洋洋");
stu.study();
</script>
5. json对象(套路)
<script>
var stu = {
"name": "龙姑娘",
age: 16,
classmate: {
name: "李小玉",
sex: "lady"
}
}
console.info(stu.age);
stu.boyFriend = "庞sir";
console.info(stu.boyFriend);
console.info(stu.name);
console.info(stu.classmate.name);
</script>
6. 原型链继承
<script>
//继承的好处是:复用代码
//让相应的对象之间的直接产生关系
function Person(name) {
this.name = name;
this.sleep = function() {
}
}
function Student(name) {
}
//下句代码表继承
Student.prototype = new Person();
var stu = new Student();
stu.sleep();
</script>
7. 组合继承(套路)
<script>
function Father(name) {
this.name = name;
}
Father.prototype.lookBook = function() {
console.info(this.name + "在看书");
}
function Son(name, age) {
//继承属性,继承不了prototype的东西
Father.apply(this, [name, age]);//或call
this.hobby = "打游戏";//这个写在哪里都无所谓
}
//继承方法method
Son.prototype = new Father();
//新的方法必须写在继承之后
Son.prototype.playPiano = function() {
}
var son = new Son("李四", 22);
son.lookBook();
</script>