首页 > 技术文章 > 函数

huangmingkedeboke 2016-04-27 21:39 原文

                              

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>

推荐阅读