一、面向对象与面向过程的区别
1、面向过程(过程化).
面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。
2、面向对象:强调类的概念,通过类可以创建任意多个具有相同属性和方法的实例对象。
面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。
二、构建对象
new的使用
以 new 操作符调用函数的时候,函数内部发生以下变化:
- 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
- 属性和方法被加入到 this 引用的对象中。
- 并且最后隐式的返回 this (创建也是隐式)。
使用new关键字来实例化对象
(1)利用类里面的构造器来构建对象(es6的)类组件
class Person{
constructor(age){ //构造器 其实就是一个构造函数
this.age = age
}
}
//new 关键词来构建
var person = new Person(18)
(2)使用构造函数来构建 (es3的) 函数组件
function Person(age){
this.age = age
}
//new关键词来构建
var person = new Person(18)
构建函数的步骤
- 自动构建对象
- 手动添加属性
- 自动返回对象
使用工厂模式来构建对象
(1)工厂模式构建对象的步骤
- 手动初始化一个对象
- 手动给这个对象添加属性
- 手动将这个对象返回
(2)工厂模式构建对象的不足
- 不能很好的去将细节补充
- 可以构建任何对象
- instanceof 返回的值只能是Object
//当前这个类的类型是否是Person类型
console.log(person instanceof Person); //false
console.log(person instanceof Object); //true
function factory(age){
//声明一个对象
var obj = new Object()
obj.age = age
return obj
}
var person = factroy(18)
三、抽取对象
- 不会动的(名词)抽为属性
- 会动的的 (动词)抽成方法
四、static静态修饰
static修饰的函数 使用类名.方法名
static修饰的函数 只会初始化一次 (每次调用的都是同一个函数)
class Person{
constructor(){
}
run(){
console.log('run');
}
static sayHello(){
console.log('hello');
}
}
new Person().run()
//静态函数 调用 使用类名.方法名 (static修饰的函数 声明一次)
Person.sayHello()
Person.sayHello()
Person.sayHello()
Person.sayHello()
console.log(Person.sayHello == Person.sayHello);//true
标签:Person,对象,age,面向对象,sayHello,构建,new
From: https://www.cnblogs.com/-lsg10026244/p/16583781.html