JavaScript之定义属性

方式1

使用Object.defineProperty定义单个属性

‘use strict‘;

var person = { };

// 定义数据属性
Object.defineProperty(person, ‘_age‘, {
    configurable: true,
    writable: true,
    enumerable: true,
    value: -1,
});

// 定义访问器属性
Object.defineProperty(person, ‘age‘, {
    configurable: false,
    enumerable: false,
    get: function () {
        return this._age;
    },
    set: function (newValue) {
        if (newValue <= 0 || newValue > 100) {
            this._age = 18;
        } else {
            this._age = newValue;
        }
    }
});

// -1
console.log(person.age);

person.age = 0;
// -18
console.log(person.age);

person.age = 30;
// 30
console.log(person.age);

方式2

使用Object.defineProperties方法定义多个属性

‘use strict‘;

var person = { };

Object.defineProperties(person, {
    _age: {
        configurable: true,
        writable: true,
        enumerable: true,
        value: -1,
    },
    age: {
        configurable: false,
        enumerable: false,
        get: function () {
            return this._age;
        },
        set: function (newValue) {
            if (newValue <= 0 || newValue > 100) {
                this._age = 18;
            } else {
                this._age = newValue;
            }
        }
    }
});

// -1
console.log(person.age);

person.age = 0;
// -18
console.log(person.age);

person.age = 30;
// 30
console.log(person.age);
时间: 2024-08-27 16:01:05

JavaScript之定义属性的相关文章

JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)

第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.color); }; } function ClassB(sColor, sName) { this.newMethod = ClassA; this.newMethod(sColor); delete this.newMethod; this.name = sName; this.sayName = f

深入理解JavaScript中的属性和特性

深入理解JavaScript中的属性和特性? JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象属性如何进行分类 属性中特性的理解 第一部分:理解JavaScript中理解对象的本质.理解对象与类的关系.对象与引用类型的关系 对象的本质:ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数.即

JavaScript 常量定义

相信同学们在看见这个标题的时候就一脸懵逼了,什么?JS能常量定义?别逗我好吗?确切的说,JS当中确实没有常量(ES6中好像有了常量定义的关键字),但是深入一下我们可以发现JS很多不为人知的性质,好好利用这些性质,就会发现一个不一样的JS世界. 首先,在JS当中,对象的属性其实还含有自己的隐含性质,比如下面对象: 1 var obj = {}; 2 obj.a = 1; 3 obj.b = 2; 在这里我们定义了一个对象 obj ,并且定义了这个对象的两个属性 a . b ,我们可以修改这两个属性

HTML5的data-*自己定义属性

HTML5添加了一项新功能是自己定义数据属性.也就是data-*自己定义属性.在HTML5中我们能够使用以data-为前缀来设置我们须要的自己定义属性,来进行一些数据的存放.当然高级浏览器下可通过脚本进行定义和数据存取.在项目实践中很实用.眼下採取这样的做法的框架也有许多,最常见的当属jQueryMobile.详细用法例下: <div id = "head" data-home = "http://blog.csdn.net/xmtblog" data-aut

[Javascript] Window的属性

window 代表浏览器中一个打开的窗口. Window的属性 属性 描述 closed 获取引用窗口是否已关闭. defaultStatus 设置或获取要在窗口底部的状态栏上显示的缺省信息. dialogArguments 设置或获取传递给模式对话框窗口的变量或变量数组. dialogHeight 设置或获取模式对话框的高度. dialogLeft 设置或获取模式对话框的左坐标. dialogTop 设置或获取模式对话框的顶坐标. dialogWidth 设置或获取模式对话框的宽度. fram

JavaScript 函数定义方法

JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立即执行,会在我们需要的时候调用到. function myFunction(a, b) { return a * b; } 分号是用来分隔可执行JavaScript语句. 由于函数声明不是一个可执行语句,所以不以分号结束. 函数表达式 JavaScript 函数可以通过一个表达式定义. 函数表达式可

javascript 从定义到执行,你应该知道的那些事

javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等,这些概念正是JS引擎工作的核心组件.这篇文章的目的是孤立的为你讲解每一个概念,而是通过一个简单的demo来展开分析,全局讲解JS引擎从定义到执行的每一个细节,以及这些概念在其中所扮演的角色. var x = 1; //定义一个全局变量 x function A(y){ var x = 2; //定

javascript的altKey属性

altKey属性的定义和用法:此属性返回一个布尔值.指示在指定的事件发生时,Alt键是否被按下并保持住了.更多相关内容可以参阅javascript的event对象一章节.语法结构: event.altKey=true|false|1|0 浏览器支持:1.IE浏览器支持此属性.2.火狐浏览器支持此属性.3.Opera浏览器支持此属性.4.谷歌浏览器支持此属性.实例代码: <!DOCTYPE html> <html> <head> <meta charset=&quo

javascript从定义到执行 js引擎 闭包

javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境 栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等,这些概念正是JS引擎工作的核心组件.这篇文章的目的是孤立的为你讲解每一个概念,而 是通过一个简单的demo来展开分析,全局讲解JS引擎从定义到执行的每一个细节,以及这些概念在其中所扮演的角色. var x = 1;  //定义一个全局变量 x function A(y){ var x = 2;