js进阶部分

面向过程编程和面向对象编程

面向过程编程

定义:就是分析问题所需要的步骤,然后用函数讲这些步骤实现,让用的时候直接调用

面向对象编程

定义:构成问题事务分解成各个对象,建立对象不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为

创建对象的方法

工厂模式创建对象

 // 工厂模式创建对象
        function test(){
            var o=new Object();
            o.name="张三";
            o.age=18;
            o.habby=['唱歌','跳舞','玩游戏'];
            return o;
        }
        var o=test();
        console.log(o);

2.构造函数模式创造对象

  // 构造函数模式创建对象
      function test(name,age,hobby){
        this.name=name;
        this.age=age;
        this.hobby=hobby;
      }
      var o=new test('李四',18,['唱歌','跳舞','写代码']);
      console.log(o);

3.原型创建对象

 function test(){
     }
     test.prototype.name="王五";
     test.prototype.age=20;
     test.prototype.hobby=['唱歌','跳舞','打代码'];
      var o=new test();
      console.log(o);

4.字面量创建对象

var obj={
name:'张六',
age :30,
hobby:['唱歌','跳舞','打代码']
}

对象的三大特性

1.封装:将数据和功能结合在一起,及属性和方法封装在一起

2.继承:所谓继承就是自己没有,别人有,将别人的拿过来给自己,让自己拥有

3.多态:多态其实就是把做的内容和谁去做分开

问题一:构造函数的this指向了谁

1.使用new 的时候,this指向的是构造函数创建的对象
2.没有new操作符的时候,this指向的是window

问题二:js中的new()到底做了些什么?

1.创建一个对象
2.将构造函数的作用域赋予给新的对象(因此this指向了新的对象)
3.执行构造函数中的代码(为这个新对象添加属性和方法)
4.返回新的对象

原型和原型链

原型对象的四个特点:
1.每一个构造函数都有一个prototype属性,指向了函数的原型对象
2.实例继承原型对象中的所有属性和方法
3.实例有一个内部指针__proto__指向了原型对象
4.原型对象有一个constructor(构造器)指向了构造函数

原型链
1.每个构造函数都有一个prototype属性指向了原型对象,他的实例都有一个内部指针指向了另外一个原型对象
3.假如另外一个原型对象又是另外一个类型(构造函数)的实例,上述关系依旧成立,如次层层递进进行成了实例与原型对象连接,称为原型链
4.原型链的尽头就是object的原型对象,印证了’一切对象’这句话。

你可能感兴趣的:(js,javascript,原型模式,开发语言)