资讯专栏INFORMATION COLUMN

javascript之创建对象

scq000 / 1000人阅读

摘要:创建对象的几种方式字面量创建原型链如下继承的属性比如原型链如下继承的属性比如原型链如下继承的属性比如使用构造器创建对象构造器就是一个普通的函数是生成的对象,它的自身属性有在被实例化时,指向了使用创建对象因为没有继承使用关键字

创建对象的几种方式:

字面量创建
var o ={a:1,b:2};
原型链如下:
o ---> Object.prototype --->null
继承的属性比如:hasOwnProperty

var a = ["i", "like", "you"];
原型链如下:
a ---> Array.prototype ---> Object.prototype ---> null
继承的属性比如:indexOf,forEach

var f = function(){return 2;}
原型链如下:
f ---> Function.prototype ---> Object.prototype ---> null
继承的属性比如:call,bind,apply
使用构造器创建对象
构造器就是一个普通的函数
function Graph(){
    this.vertexes = [];
    this.edges = [];
}

Graph.prototype = {
    addVertex: function(v){
        this.vertexes.push(v);
    }
};

var g = new Graph();
// g是生成的对象,它的自身属性有"vertexes","edges",
// 在g被实例化时,g.[[prototype]]指向了Graph.prototype
使用Object.create创建对象
var a = {a:1};
// a ---> Object.prototype ---> null

var b = Object.create(a);
//b ---> a ---> Object.prototype --->null

var c = Object.create(b);
//c ---> b ---> a ---> Object.prototype --->null

var d = Object.create(null);
//d ---> null
console.log(d.hasOwnProperty); // undefined,因为d没有继承Object.prototype
使用class关键字
‘use strict’

class Polygon {
    constructor(height,width){
        this.height = height;
        this.width = width;
    }
}

class Square extends Polygon {
    constructor(sideLength){
        super(sideLength, sideLength);
    }
    get area() {
        return this.height * this.width;
    }
    set sideLength(newLength) {
        this.height = newLength;
        this.wdith = newLength;
    }
}

var square = new Square(2);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87950.html

相关文章

  • JavaScript深入作用域链

    摘要:下面,让我们以一个函数的创建和激活两个时期来讲解作用域链是如何创建和变化的。这时候执行上下文的作用域链,我们命名为至此,作用域链创建完毕。 JavaScript深入系列第五篇,讲述作用链的创建过程,最后结合着变量对象,执行上下文栈,让我们一起捋一捋函数创建和执行的过程中到底发生了什么? 前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代...

    waltr 评论0 收藏0
  • JavaScript深入执行上下文

    摘要:深入系列第七篇,结合之前所讲的四篇文章,以权威指南的为例,具体讲解当函数执行的时候,执行上下文栈变量对象作用域链是如何变化的。前言在深入之执行上下文栈中讲到,当代码执行一段可执行代码时,会创建对应的执行上下文。 JavaScript深入系列第七篇,结合之前所讲的四篇文章,以权威指南的demo为例,具体讲解当函数执行的时候,执行上下文栈、变量对象、作用域链是如何变化的。 前言 在《Jav...

    gougoujiang 评论0 收藏0
  • JavaScriptnew运算符

    摘要:之运算符运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。使用指定的参数调用构造函数,并将绑定到新创建的对象。 JavaScript之new运算符 new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new关键字会进行如下的操作: 1. 创建一个空的简单JavaScript对象(即{}); 2. 链接该对象(即设置该对象的构造函数)到另一个对...

    wwq0327 评论0 收藏0
  • JavaScript深入变量对象

    摘要:深入系列第四篇,具体讲解执行上下文中的变量对象与活动对象。下一篇文章深入之作用域链本文相关链接深入之执行上下文栈深入系列深入系列目录地址。 JavaScript深入系列第四篇,具体讲解执行上下文中的变量对象与活动对象。全局上下文下的变量对象是什么?函数上下文下的活动对象是如何分析和执行的?还有两个思考题帮你加深印象,快来看看吧! 前言 在上篇《JavaScript深入之执行上下文栈》中...

    Zachary 评论0 收藏0
  • JavaScript基础创建对象、原型、原型对象、原型链

    摘要:在最开始的时候,原型对象的设计主要是为了获取对象的构造函数。同理数组通过调用函数通过调用原型链中描述了原型链的概念,并将原型链作为实现继承的主要方法。 对象的创建 在JavaScript中创建一个对象有三种方式。可以通过对象直接量、关键字new和Object.create()函数来创建对象。 1. 对象直接量 创建对象最直接的方式就是在JavaScript代码中使用对象直接量。在ES5...

    wangbjun 评论0 收藏0
  • JavaScript深入创建对象的多种方式以及优缺点

    摘要:深入系列第十四篇,讲解创建对象的各种方式,以及优缺点。也就是说打着构造函数的幌子挂羊头卖狗肉,你看创建的实例使用都无法指向构造函数这样方法可以在特殊情况下使用。 JavaScript深入系列第十四篇,讲解创建对象的各种方式,以及优缺点。 写在前面 这篇文章讲解创建对象的各种方式,以及优缺点。 但是注意: 这篇文章更像是笔记,因为《JavaScript高级程序设计》写得真是太好了! 1....

    Terry_Tai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<