javascript 面向对象

1.创建对象

var emp = new Object(); //创建一个Object 对象
emp.name = 'stanley'; //创建一个name 属性并赋值
emp.age = 10; //创建一个age 属性并赋值
emp.run = function () {
console.log(this.name,this.age);
};
emp.run(); //输出属性和方法的值

this. 代表emp的本身,这是创建一个对象的一种基本方法,但是这种方法会存在一种缺陷,需要添加多个对象的话,代码重复性大,为避免这一现象使用构造函数

2.构造函数

function emp(name,age){
                var obj =new Object;
                obj.name = name;
                obj.age = age;
                obj.run =  function(){
                    console.log(this.name,this.age);
                }
            }
            var stanley = new emp("stanly",10);//必须主要new语法
            console.log(stanley);

3.原型(prototype)

  每个javascript对象都有一个原型对象,每个对象都有一个隐藏的__proto__属性,这个属性就是“原型对象”的引用。

      1、prototype本质上还是一个JavaScript对象;

      2、每个函数都有一个默认的prototype属性;

      3、通过prototype我们可以扩展Javascript的对象

function emp(name,age){
                var obj =new Object;
                obj.name = name;
                obj.age = age;
                obj.run =  function(){
                    console.log(this.name,this.age,this.money);
                }
            }
            emp.prototype.money = 500;//通过原型增加属性
            var zhangwuji = new emp("zhangwuji",100);
            console.log(zhangwuji.money); 

  利用原型 来求数组的和

 1) 用原型插入一个求数组和的方法

 Array.prototype.sum = function(){
             var sum = 0;
            for(var i=0;i<this.length;i++){
               sum += this[i];
             }
            return sum;

  然后定义数组,输出计算的和

var arr1 = new Array(1,2,3,4,5,6);
console.log(arr1.sum());

4.继承的三种方式

  1)给原型对象添加成员(通过对象的动态特性),但是这并不是严格意义上的继承
  2)直接替换掉原来的原型对象,那么构造函数实例化的对象就能够调用新的原型对象中的方法和属性(使用这种方式实现继承的时候,很有可能把之前原型中的属性和方法清空)。
  3)利用混合的方式给原型对象添加成员,就是使用for in 外加对象的动态特性,也能够把另一个对象所有的方法都传给当前的对象(使用这种方式有可能会把原来原型中的同名方法或属性覆盖掉)。

    

  

原文地址:https://www.cnblogs.com/wangzheng98/p/10926212.html