JavaScript——面向对象

本文探讨了JavaScript中面向对象编程的特性,特别是访问器属性set和get的用法。通过实例演示如何定义和操作带有条件逻辑的年份属性,并揭示了如何判断属性在原型链上的位置。此外,文章还讲解了`hasOwnProperty`和`for...in`的区别,以及实例中的方法和构造函数的关系。

记录一下阅读《JavaScript高级程序设计》的一点点笔记
——面向对象

访问器的属性 set get

var book = {
            _year : 2004,
            edition : 1
        };
        Object.defineProperty(
            book,"year", {
                get : function(){
                    return this._year;
                },
                set : function(newValue) {
                    if(newValue > 2004) {
                        this._year = newValue;
                        this.edition += newValue - 2004;
                    }
                }
            }
        )

设置一个属性的值会导致另一属性的变化

判定该属性在原型中还是实例中

eg :

  function Person(){}

        Person.prototype.name = "nich";
        Person.prototype.age = 12;
        Person.prototype.job = "se";
        Person.prototype.sayName = function(){
            console.log(this.name);
        };

        var person = new Person();

hasOwnProperty是否在实例中

person.hasOwnProperty("name")

for in 和 hasOwnProperty 判断是否属于原型

function hasPrototypeProperty(object,name) {  
            return !object.hasOwnProperty(name) && (name in object)
        }
        //既不在实例中 又在对象里——属于原型

实例中的指针指向的是方法,不是构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值