JS--面向对象

对象的声明

1.声明对象的方式: 字面量赋值
  var person = {
      name: 'xiaoming',
      age: 13,
  }

2.构造函数的方式: 自定义的构造函数 Object 构造函数
function student(name) {
        this.name = name;
        this.listen = function() {
            console.log(this.name + "在听课")
        }
    }
  	var t = teacher('nitong');
	var xiaohong = new student('xiaohong');
    var xiaoming = new student('xiaoming');
    xiaohong.listen();
    xiaoming.listen();

    console.log(xiaohong instanceof student);
    console.log(xiaoming instanceof student);
    console.log(t instanceof teacher);//false
    /**
    *function student(name) {}
    * name => xiaoming;
    * this = {};
    * this.name = 'xiaoming';
    *
    * return this;
    */
    console.log(xiaohong);
    console.log(xiaoming);
3.工厂模式
function teacher(name) {
        var obj = new Object();
        obj.name = name;
        return obj;
    }
4.原型模式
// 函数 是第一等公民 length : 描述该方法形式参数的个数
// prototype ---> 对象 {} 称之为原型对象
// prototype constructor ---> 指向当前的函数本体

// 函数内部 arguments.callee ---> 指向当前函数本体
function person(name, age) {
        this.name = name;
        this.age = age;
    }

    person.prototype.hello = "加油";
    person.prototype.sayhi = function() {
        console.log(this.name + "hello");
    }
    console.log(person.prototype.constructor === person);

    var p1 = new person('xiaoming',20);
    var p2 = new person('xiaohong',22);

    console.log(p1.name);
    console.log(p1.age);
    console.log(p1.hello);
    p1.sayhi();

    console.log("--------------")

    console.log(p2.name);
    console.log(p2.age);
    console.log(p2.hello);
    p2.sayhi();

//原型链 :JS 在创建对象的时候,要求每一个对象都有一个原型属性
// 对象 原型属性 proto
// 对于我们的函数 prototype

// 这两个之间有什么关系
// 由构造函数 person 创建出来的 对象 P       p.__proto__ === person.prototype

// 获取某个对象的某个属性,如果当前对象中没有这个属性,就会到该对象的原型属性对象中寻找,
// 原型对象如果还没有,找原型对象的原型对象。从而形成了一个链条
// 直到找到 Object.prototype === null.


// 对象属性的遍历 for-in 遍历对象中的属性值
5.遍历和删除
 delete p1.name;
    delete p1.age;
    delete p1.hello;
    delete p1.sayhi;


    for(var i in p1) {
        console.log(i); //属性
        console.log(p1[i]) //属性值
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值