面向对象
创建方式
1.使用Object或对象字面量创建对象
2.工厂模式创建对象
3.构造函数模式创建对象
4.原型模式创建对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// 1.使用Object内置的构造函数来创建对象
var person = new Object();
person.name = '热狗';
person.age = 20;
person.fav = function () {
alert(this.name)
};
person.fav();
// 2.字面量方式创建
var person = {
name: '热狗',
age:18,
fav:function () {
alert(this.name)
}
};
person.fav();
// 3.工厂模式
function createPerson() {
var person = new Object();
person.name = '热狗';
person.age = 20;
person.fav = function () {
alert(this.name)
};
return person;
}
var p1 = createPerson();
function createFruit() {
var fruit = new Object();
fruit.name = '热狗';
fruit.age = 20;
fruit.fav = function () {
alert(this.name)
};
return fruit;
}
var f1 = createFruit();
console.log(p1 instanceof Object);
console.log(f1 instanceof Object);
</script>
</body>
</html>
构造函数创建对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// 构造函数创对象
function Person(name,age) {
this.name = name;
this.age = age;
this.fav = function () {
alert(this.name)
}
}
var p1 = new Person('热狗', 18);
console.log(p1);
console.log(p1 instanceof Person);
</script>
</body>
</html>
原型模式创建对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function Person(name, age) {
this.name = name;
this.age = age;
}
// Person.prototype它是person的父类
Person.prototype.showName = function () {
// this指向的是person
console.log(this.name);
};
var p1 = new Person('热狗', 18);
p1.showName();
// 多态: 如果现在两个类都有共同的方法,那么我们把共同测方法抽取出来成为一个基类,
// 然后这两个类继承这个基类,然后调用相同的方法它们所处的这个形态就不一样
// 程序员 java程序员 python程序员他们都是程序员,但是他们继承程序员这个类,
// 他们调用相同的方法但是得到的结果就不一样
</script>
</body>
</html>
浙公网安备 33010602011771号