Create object
•Object direct quantity
var o = { foo : "bar" }
•Constructor
var o = new Object();
•Prototypal inheritance
var p = Object.create(o);
Class inheritance
Javascript objects have their own properties and inherited properties.
•When querying the attribute x of object o, first search for the attribute x in o. If not found, then search for the x attribute in the prototype object of o until x or an object whose prototype is null is found. >
•When assigning a value to the x attribute of object o, if o already has an own attribute x, change the value of x. If attribute x does not exist in o, create an x attribute for o and assign a value•In other words, the prototype chain will only work when querying.
var O = { x : 1 }; function P() { this.y = 2; } P.prototype = O; var t = new P(); console.log(t); console.log('x' in t);//true console.log(t.hasOwnProperty('x'));//false
Object properties
•Traverse object properties
You can use for..in to iterate over the properties of an object
So using hasOwnProperty you can determine whether it is the object's own property.
•Characteristics of object attributes
Use Object.getOwnPropertyDescriptor() to get the descriptor of a specific property of an object
For example
var o = { foo : 'bar' } Object.defineProperty(o, "foo", { writable : false }); o.foo = 'world'; console.log(o.foo);//仍然输出bar
For example
The enumerable of attributes such as length in Array is false, so,
for (p in Array) { console.log(p); }
Configurability (configurable) indicates the configurability and enumerability of properties that can be modified
These configuration properties can be defined using Object.defineProperties.
Object.defineProperty(o, "foo", { writable : false });
Set represents a method for setting object properties
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { console.log('get year'); return this._year; }, set: function (newValue) { console.log('set year'); if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005;//控制台输出‘set year' console.log(book.year);//控制台输出‘get year'和year的值
Object methods
toString converts the object into a string. The default conversion will be something like [object Object], so if you need to convert it to json format, you can use JSON.stringifyvalueOf is used when objects need to be converted into other types. Again, there's not much to say about the default conversion.
Executable object
function bar(o) { var f = function() { return "Hello World!"; } o.__proto__ = f.__proto__; f.__proto__ = o; return f; } var o = { x: 5 }; var foo = bar(o); console.log(foo()); console.log(foo.x); console.log(typeof foo);//function