markdown JavaScript创建对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown JavaScript创建对象相关的知识,希望对你有一定的参考价值。

### 对象字面量
var o = {
    p:"I’m in Object literal",
    alertP:function(){
        alert(this.p);
    }
}

### new表达式
function O(){
    this.p = "I’m in constructed object";
    this.alertP = function(){
        alert(this.p);
    }
}
var o = new O();

在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事:

var obj  ={};
obj.__proto__ = CO.prototype;
CO.call(obj);
return obj;

第一行,创建一个空对象obj。

第二行,将这个空对象的__proto__成员指向了构造函数对象的prototype成员对象,这是最关键的一步,具体细节将在下文描述。

第三行,将构造函数的作用域赋给新对象,因此CA函数中的this指向新对象obj,然后再调用CO函数。于是我们就给obj对象赋值了一个成员变量p,这个成员变量的值是” I’min constructed object”。

第四行,返回新对象obj。当构造函数里包含返回语句时情况比较特殊,这种情况会在下文中说到。

[参考](https://www.cnblogs.com/wangyingblog/p/5583825.html)

//无意间看到这段代码
function inheritPrototype(subType,superType){
  var prototype = Object(superType.prototype);
  prototype.constructor = subType;
  subType.prototype = prototype;
}

// 以上是原型继承的优化方法
// 看到这个Object顺便追究一下Object这个万物(JS)之本

var obj  = Object({ name:"tcc"});//与加new等效
console.log(obj instanceof Object);//true
console.log(obj.name);//tcc

var ostr = Object("tcc");//Object构造函数也会像工厂方法一样,根据传入的值的类型返回相应的基本包装类型的实例
ostr.age = 18;
console.log(ostr instanceof String);//true
console.log(ostr.age);//18  可以存数据

var str = String("tcc");//这是转型函数,其它的还有Nmber()、 Boolean()、 Array()
var str = new String("tcc");//这是才是引用类型

```
function Person(){

  this.name;

}

Person.prototype.age = 12;

var p1 = new Person();

console.log(p1.name); //undefined

console.log(p1.age); //12

-------------------------------------------------

Person.__proto__.age = 34;

var p2 = Object.create(Person);

console.log(p2.name); //Person

console.log(p2.age); //34

//
Object.create =  function (o) {
    var F = function () {};
    F.prototype = o;
    return new F();
};
```

[参考1](https://blog.csdn.net/blueblueskyhua/article/details/73135938)

[参考2](https://blog.csdn.net/chjunjun/article/details/80698710)

以上是关于markdown JavaScript创建对象的主要内容,如果未能解决你的问题,请参考以下文章

markdown 面向对象的JavaScript

markdown JavaScript和对象模型

markdown 在Javascript中删除Diacritics(可用作普通函数,`String`对象和jQuery插件的扩展)。

markdown Catatan terkait dengan pemanfaatan javascript untuk mengakses HTML DOM(文档对象模型)

markdown MEDIUM BLOG POST - Javascript的3个主要范例:面向对象编程的三个原则[第2部分,共4部分]

markdown JS:创建对象