面向对象

2017-05-21  本文已影响0人  他在发呆
概念:一组无序属性的集合;属性的值可以是普通数据类型;
键值对:如(color:red)有key有对应的value值

var car={
    name:'xiaoming',
    age:5,
    run:function(){
        console.log('nihao');
    }
}
console.log(typeof car);//object
car.name="1111"
car.num="123";
delete car.num;
注:  一个空的dom对象会有很多个对象属性,只是属性值都是null
    var pc = {//字面量创建
        name: "dell",
        size: "15",
        color: "black",
        start: function(){
            console.log('welcome to myWorld');
        }
    }
    console.log(pc['name']);
    pc["name"]="apple";
    pc["price"]=7280;
    console.log(pc["price"]);
    delete pc["color"];
    console.log(pc);
    function getPro(proName){//形参
        console.log(pc.proName);//这样不行,不是具体的属性名undefined
        console.log(pc[proName])
    }
for(let prop in "abcd"){
        console.log(prop);
        console.log(pc[prop])
        // 可以使用charAt()字符串操作函数
    }

第二种创建对象方式 new + 构造函数

var newObj = new Object();//可以省略();
newObj.name = "tom";
newObj.age = 20;
delete newObj.name;

工厂模式创建对象

    function factory(name,age,gender,stuNum){
        var obj = {};
        obj.name = name;
        obj.age = age;
        obj.gender = gender;
        obj.stuNum = stuNum;
        obj.say = function(){
            console.log("我叫:"+this.name+"我今年"+this.age)
        }
        //var obj = new Object(); 
        return obj;
    }
使用工厂函数创建对象
var stu = factory("name",28,"男","h51614");

构造函数

是一种特殊的函数,用于创建同类对象
js是弱语言,ES6已经正式引入了类
自带的有Date() String() Array();

构造函数的创建

    function Person(name,age){
        this.name = name;
        this.age = age;
        this.say = function(){
            console.log("我叫"+this.name);
        }
    }

构造函数和普通函数的区别:不适用return关键字,构造函数执行时,使用new关键字执行构造函数

var p1 = new Person("tom",20);

p1.say()

构造函数的特性:与普通函数的区别

  1. 构造函数名首字母大写
  2. 构造函数内部使用this关键字处理属性赋值逻辑
  3. 构造函数不使用return关键字返回新对象
  4. 使用new关键字执行函数。

构造函数与实例:实例是new+构造函数创建的对象,新对象叫做构造函数的实例,实例与构造函数之间是多对一的关系

原型

每一个函数都有一个私有的原型属性prototype,初试状态,这个值是一个object类型的对象

原型最重要的作用是为所有实例提供公共的空间,原型内的属性可以提供给构造函数所有的实例复用

 每一个实例都有一个‘__proto__’属性指向构造函数的原型  

什么是原型?每一个函数都有一个私有的原型属性prototype,
他们对应的实例都有一个公共的__proto__指向构造函数的原型
是函数就有__proto__,

上一篇下一篇

猜你喜欢

热点阅读