对象的创建

本文通过具体示例介绍了JavaScript中对象的创建方式,包括工厂模式、构造函数模式、原型模式等,并探讨了如何判断属性存在于原型还是实例中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建对象

工厂方式

  • 来个栗子:
    function createPerson(name,sex){
        //原料
        var obj = new Object();
        //加工
        obj.name = name;
        obj.sex = sex;
        obj.show = function (){
            alert(this.name)
        }
        //出厂
        return obj;
    }
    
    var p1 =  createPerson('hezhi','男');
    var p2=  createPerson('hezhi','男');
    p1.show();  //hezhi
    p2.show();  //hezhi
    alert(p2.show==p1.show)   //false
  • 所谓的构造函数模式,原型模式,都是在工厂方式上进一步改造而成的

判断一个属性倒底是在原型中,还是在实例中 hasOwnProperty()

  • 来个栗子
    function Person(){
        
    };
    Person.prototype.name = "hezhi";
    Person.prototype.age = 24;
    
    var p1 = new Person()
    
    alert(p1.name)          //hezhi
    alert(p1.hasOwnProperty("name"))   //false       
    
    p1.name = 'zhaoqiao'
    alert(p1.name);         //zhaoqiao
    alert(p1.hasOwnProperty("name"))    //true
    
    //==华丽的分割线: 只有到name这个属性在对象的实例中的时候才会返回true;当存在原型中的时候只会返回false==//
    

属性在原型中完全成立的条件:来个栗子

  • hasPrototypeProperty()
    function Person(){
                
    };
    Person.prototype.name = "hezhi";
    Person.prototype.age = 24;
    
    var p1 = new Person()
    
    
    alert(p1.name)      //hezhi
    alert("name" in p1)  //true
    
    p1.name ="zhangqiao";
    alert(p1.name)     //zhangqiao
    alert("name" in p1)  //true
    
    in 操作符表示,只要实例对象p1能够访问到的属性   //返回值都是 true
    
    
    function hasPrototypeProperty(obj,name){
        return  !obj.hasOwnProperty("name") && ("name" in obj)
    }
    
    

对象字面量的方法来重写原型对象

  • 来个栗子
    function (){
    }
    
    Person.prototype = {
        name : 'hezhi',
        age : 29,
        show : function(){alert(this.name)}
    }

转载于:https://www.cnblogs.com/he-zhi/p/6796566.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值