javascript代码实例教程-javascript一种新的对象创建方式-Object.create()

发布时间:2019-02-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-javascript一种新的对象创建方式-Object.create()脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 1.Object.create() 是什么

 

  Object.create(PRoto [, proPErtiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的。

 

  例如: 

 

复制代码

function Car (desc) {

    this.desc = desc;

    this.color = "red";

}

 

Car.prototype = {

    getInfo: function() {

      return 'A ' + this.color + ' ' + this.desc + '.';

    }

};

//instantiate object using the constructor function

VAR car =  Object.create(Car.prototype);

car.color = "blue";

alert(car.getInfo());

复制代码

结果为:A blue undefined.

 

2.propertiesObject 参数的详细解释:(默认都为false)

 

 数据属性

 

wrITable:是否可任意写

configurable:是否能够删除,是否能够被修改

enumerable:是否能用 for in 枚举

value:值

 访问属性:

 

get(): 访问

set(): 设置

3.例子:直接看例子就知道怎么用。 

 

复制代码

<!DOCTYPE htML>

<html>

<head>

    <title>yupeng's document </title>

    <;meta charset="utf-8"/>

</head>

<body>

    <script type="text/javascript">

 

        var obj = {

 

            a:function(){

                console.LOG(100)

            },

            b:function(){

                console.log(200)

            },

            c:function(){

                console.log(300)

            }

 

        }

 

        var newObj = {};

 

        newObj = Object.create(obj,{

            t1:{

                value:'yupeng',

                writable:true

            },

            bar: {

                configurable: false,

                get: function() { return bar; },

                set: function(value) { bar=value }

            }

            

        })

 

        console.log(newObj.a());

        console.log(newObj.t1);

        newObj.t1='yupeng1'

        console.log(newObj.t1);

        newObj.bar=201;

        console.log(newObj.bar)

        

        function Parent() { }

        var parent = new Parent();

        var child = Object.create(parent, {

              dataDescriptor: {

                value: "This property uses this string as its value.",

                writable: true,

                enumerable: true

              },

              accessorDescriptor: {

                get: function () { return "I am returning: " + accessorDescriptor; },

                set: function (val) { accessorDescriptor = val; },

                configurable: true

              }

            });

 

        child.accessorDescriptor = 'YUPENG';

        console.log(child.accessorDescriptor);

 

 

 

        var Car2 = function(){

            this.name = 'aaaaaa'

        } //this is an empty object, like {}

        Car2.prototype = {

          getInfo: function() {

            return 'A ' + this.color + ' ' + this.desc + '.';

          }

        };

 

        var newCar = new Car2();

         

        var car2 = Object.create(newCar, {

          //value properties

          color:   { writable: true,  configurable:true, value: 'red' },

          //concrete desc value

          rawDesc: { writable: true, configurable:true, value: 'Porsche boxter' },

          // data properties (assigned using getters and setters)

          desc: { 

            configurable:true, 

            get: function ()      { return this.rawDesc.toUpperCase();  },

            set: function (value) { this.rawDesc = value.toLowerCase(); }  

          }

        }); 

        car2.color = 'blue';

        console.log(car2.getInfo());

        car2.desc = "XXXXXXXX";

        console.log(car2.getInfo());

        console.log(car2.name);

 

 

 

    </script>

</body>

</html>

复制代码

结果为:

 

100

yupeng

yupeng1

201 

I am returning: YUPENG 

A blue PORSCHE BOXTER. 

A blue XXXXXXXX. 

aaaaaa

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-javascript一种新的对象创建方式-Object.create()全部内容,希望文章能够帮你解决javascript代码实例教程-javascript一种新的对象创建方式-Object.create()所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。