Home > Web Front-end > JS Tutorial > Detailed explanation of Javascript Objects_Basic knowledge

Detailed explanation of Javascript Objects_Basic knowledge

WBOY
Release: 2016-05-16 16:37:30
Original
1316 people have browsed it

Create object

•Object direct quantity

var o = {
 foo : "bar"
 }
 
Copy after login

•Constructor

var o = new Object();
 
Copy after login

•Prototypal inheritance

var p = Object.create(o);
 
Copy after login

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
 
Copy after login
You can use in or hasOwnProperty to determine whether there is a property in the object.

Object properties

•Traverse object properties


You can use for..in to iterate over the properties of an object

When using for..in, the properties on the prototype chain will be traversed. The traversal order is breadth-first traversal

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

Writable (writable) indicates whether the object properties are writable

For example


var o = {
  foo : 'bar'
}
Object.defineProperty(o, "foo", { writable : false });
o.foo = 'world';
console.log(o.foo);//仍然输出bar
Copy after login
Enumerable indicates whether the object properties are enumerable

For example

The enumerable of attributes such as length in Array is false, so,

for (p in Array) {
  console.log(p);
}
Copy after login
Output nothing

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 });

Get represents the method of obtaining the properties of an object

Set represents a method for setting object properties

Example


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的值
Copy after login

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.stringify

valueOf is used when objects need to be converted into other types. Again, there's not much to say about the default conversion.



Executable object

An executable object can be created through the following methods


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
Copy after login
can be used as an object (with a prototype chain), or as a function to be called directly

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template