导航
×
   ❮   
HTML CSS JavaScript PHP Go Sass W3C Colors ECMS

JS 参考手册

JS 参考手册(字母排序)

JavaScript

JS Arrays JS Boolean JS Classes JS Dates JS Error JS Global JS Iterators JS JSON JS Maps JS Math JS Numbers JS Objects JS Operators JS Assignment JS Arithmetic JS Comparison JS Logical Operators JS Bitwise Operators JS Misc Operators JS Precedence JS Promises JS RegExp Patterns JS RegExp Reference JS Sets JS Statements JS Strings JS Typed Arrays JS Typed Reference

Window

Window Object Window Console Window History Window Location Window Navigator Window Screen

HTML DOM

HTML Documents HTML Elements HTML Attributes HTML Collection HTML NodeList HTML DOMTokenList HTML Styles
alignContent alignItems alignSelf animation animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationTimingFunction animationPlayState background backgroundAttachment backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPosition backgroundRepeat backgroundSize backfaceVisibility border borderBottom borderBottomColor borderBottomLeftRadius borderBottomRightRadius borderBottomStyle borderBottomWidth borderCollapse borderColor borderImage borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderLeft borderLeftColor borderLeftStyle borderLeftWidth borderRadius borderRight borderRightColor borderRightStyle borderRightWidth borderSpacing borderStyle borderTop borderTopColor borderTopLeftRadius borderTopRightRadius borderTopStyle borderTopWidth borderWidth bottom boxShadow boxSizing captionSide caretColor clear clip color columnCount columnFill columnGap columnRule columnRuleColor columnRuleStyle columnRuleWidth columns columnSpan columnWidth counterIncrement counterReset cssFloat cursor direction display emptyCells filter flex flexBasis flexDirection flexFlow flexGrow flexShrink flexWrap font fontFamily fontSize fontStyle fontVariant fontWeight fontSizeAdjust height isolation justifyContent left letterSpacing lineHeight listStyle listStyleImage listStylePosition listStyleType margin marginBottom marginLeft marginRight marginTop maxHeight maxWidth minHeight minWidth objectFit objectPosition opacity order orphans outline outlineColor outlineOffset outlineStyle outlineWidth overflow overflowX overflowY padding paddingBottom paddingLeft paddingRight paddingTop pageBreakAfter pageBreakBefore pageBreakInside perspective perspectiveOrigin position quotes resize right scrollBehavior tableLayout tabSize textAlign textAlignLast textDecoration textDecorationColor textDecorationLine textDecorationStyle textIndent textOverflow textShadow textTransform top transform transformOrigin transformStyle transition transitionProperty transitionDuration transitionTimingFunction transitionDelay unicodeBidi userSelect verticalAlign visibility width wordBreak wordSpacing wordWrap widows zIndex

HTML Events

HTML Events HTML Event Objects HTML Event Properties HTML Event Methods

Web APIs

API Canvas API Console API Fetch API Fullscreen API Geolocation API History API MediaQueryList API Storage API Validation API Web

HTML 对象

<a> <abbr> <address> <area> <article> <aside> <audio> <b> <base> <bdo> <blockquote> <body> <br> <button> <canvas> <caption> <cite> <code> <col> <colgroup> <datalist> <dd> <del> <details> <dfn> <dialog> <div> <dl> <dt> <em> <embed> <fieldset> <figcaption> <figure> <footer> <form> <head> <header> <h1> - <h6> <hr> <html> <i> <iframe> <img> <ins> <input> button <input> checkbox <input> color <input> date <input> datetime <input> datetime-local <input> email <input> file <input> hidden <input> image <input> month <input> number <input> password <input> radio <input> range <input> reset <input> search <input> submit <input> text <input> time <input> url <input> week <kbd> <label> <legend> <li> <link> <map> <mark> <menu> <menuitem> <meta> <meter> <nav> <object> <ol> <optgroup> <option> <output> <p> <param> <pre> <progress> <q> <s> <samp> <script> <section> <select> <small> <source> <span> <strong> <sub> <summary> <sup> <table> <tbody> <td> <tfoot> <th> <thead> <tr> <textarea> <time> <title> <track> <u> <ul> <var> <video>

JavaScript Object.defineProperty() 方法


示例

添加属性:

// 创建一个对象:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "EN"
};

// 添加新属性
Object.defineProperty(person, "year", {value:"2008"})
亲自试一试 »

更改属性:

// 创建一个对象:
const person = {
  firstName: "John",
  lastName: "Doe",
  language: "EN"
};

// 更改属性
Object.defineProperty(person, "language", {value:"NO"})
亲自试一试 »

更多示例如下!


描述

Object.defineProperty() 方法用于添加或更改对象属性。

Object.defineProperty() 方法允许您更改属性元数据。

Object.defineProperty() 方法允许您添加 getter 和 setter。

更多示例请参见下方。


相关方法:

Object.defineProperty() 添加或更改一个属性。

Object.defineProperties() 添加或更改多个属性。

 

Object.getOwnPropertyNames() 返回对象的属性名称。

Object.getOwnPropertyDescriptor() 返回属性的描述符。

Object.getOwnPropertyDescriptors() 返回所有属性的描述符。


语法

Object.defineProperty(object, property, descriptor)

参数

参数 描述
object 必填项。
对象。
property 必填。
属性名称。
descriptor 必填。
要添加或更改的属性的描述:

value: value
writable : true|false
enumerable : true|false
configurable : true|false
get : function
set : function

返回值

类型 描述
Object 已更改的传递对象。

更多示例

示例

// 创建一个对象:
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO",
};

// 更改属性:
Object.defineProperty(person, "language", {
  value: "EN",
  writable : true,
  enumerable : true,
  configurable : true
});

// Enumerate Properties
let txt = "";
for (let x in person) {
  txt += person[x] + "<br>";
}

// 显示属性
document.getElementById("demo").innerHTML = txt;
亲自试一试 »

下一个示例的代码相同,只是隐藏了枚举中的语言属性:

示例

// 创建一个对象:
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO",
};

// 更改属性:
Object.defineProperty(person, "language", {
  value: "EN",
  writable : true,
  enumerable : false,
  configurable : true
});

// Enumerate Properties
let txt = "";
for (let x in person) {
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
亲自试一试 »

设置器和获取器

此示例创建了一个设置器和一个获取器,用于确保语言中大写字母的更新安全:

示例

// 创建一个对象:
const person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO"
};

// 更改属性:
Object.defineProperty(person, "language", {
  get : function() { return language },
  set : function(value) { language = value.toUpperCase()}
});

// 更改语言
person.language = "en";

// 显示语言
document.getElementById("demo").innerHTML = person.language;
亲自试一试 »

此示例使用 getter 将名字和姓氏连接起来:

示例

// 创建一个对象:
const person = {
  firstName: "John",
  lastName : "Doe"
};

// 定义一个 Getter 方法
Object.defineProperty(person, "fullName", {
get: function () {return this.firstName + " " + this.lastName;}
});
亲自试一试 »

JavaScript 的 Getter 和 Setter 非常适合创建计数器:

示例

// 定义设置器和获取器
Object.defineProperty(obj, "reset", {
get : function () {this.counter = 0;}
});
Object.defineProperty(obj, "increment", {
get : function () {this.counter++;}
});
Object.defineProperty(obj, "decrement", {
get : function () {this.counter--;}
});
Object.defineProperty(obj, "add", {
set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, "subtract", {
set : function (value) {this.counter -= value;}
});
亲自试一试 »

浏览器支持

Object.defineProperty() 是 ECMAScript 5 (ES5 2009) 的一项特性。

JavaScript 2009 自 2013 年 7 月起,所有浏览器均已支持 JavaScript 2009。

Chrome
23
IE/Edge
11
Firefox
21
Safari
6
Opera
15
2012年9月 2012年9月 2013年4月 2012年7月 2013年7月


Copyright ©2026 蒙ICP备2026009383号 All Rights Reserved 提供的内容仅用于学习和测试,不保证内容的正确性。