书山有路勤为径,学海无涯苦作舟。 知识改变命运,行动创造未来。

面向对象

创建自定义对象的最简单方式就是创建一个 Object 的实例,然后再为它添加属性和方法

什么是对象?

创建一个对象演示说明

  • 细节: this用法
  • 两种不同的定义方式

默认创建的对象所包含的属性

Object
__proto__
:
Object
__defineGetter__
:
__defineGetter__()
__defineSetter__
:
__defineSetter__()
__lookupGetter__
:
__lookupGetter__()
__lookupSetter__
:
__lookupSetter__()
constructor
:
Object()
hasOwnProperty
:
hasOwnProperty()
isPrototypeOf
:
isPrototypeOf()
propertyIsEnumerable
:
propertyIsEnumerable()
toLocaleString
:
toLocaleString()
toString
:
toString()
valueOf
:
valueOf()
get __proto__
:
__proto__()
set __proto__
:
__proto__()

首先定义了一个students对象,添加了2个属性name ,age 和一个方法print。 this可以调用对象中的方法。

声明对象的第一种方式

var students = new Object();
			
students.name = "zhangsan";
students.age = 44;

students.print = function() {
				console.log("Hello" + this.name);
}

console.log(students.print);

声明对象的第二种方式

var students = {
   name: "zhangsan",
   age : 44,
   print: function(){
      console.log(this.name)
   }
}

console.log(students);

实验效果

images


创建对象

工厂模式

  • 解决重复代码问题,使用函数创建多个对象。
function createObj(name,age){
				var s = new Object()
				s.name = name;
				s.age = age;
				s.print = function(){
					console.log(this.name)
				}
				
				return s
}
			
var students = createObj("zhansgan",44);
console.log(students);

var teachers = createObj("lisi",55);
console.log(teachers);
  • 没有解决对象识别的问题。

实验效果

iamges


构造函数

  • 区别与普通函数 : 使用大写字母开头
  • 普通函数使用小写字母开头
function Default1(name,age){
				this.name = name;
				this.age = age;
				this.print = function(){
					console.log(this.name);
				}
				
			}
			
			var students = new Default1("zhangsan",44);
			console.log(students);
			
			var teachers = new Default1("lisi",55);
			console.log(teachers);
  • 没有声明一个object
  • 直接将属性和方法赋值给了 this
  • 没有return