ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript学习日志,对象...简记

2021-04-09 19:35:07  阅读:137  来源: 互联网

标签:... prototype false name 对象 JavaScript 简记 属性 构造函数


对象

构造函数

  • 原型对象
    构造函数的原型对象,该对象在构造函数创建时自动存在。该对象的属性和函数是构造函数的默认属性和方法。构造函数中的属性是私有的,但是原型对象中的是共有的。原型对象内有一个默认的 constructor 属性,指向构造函数。

    实例化对象中默认存在一个__proto__属性,该属性指向构造函数的原型对象。

  • 对象属性的特征

    configurable:false,能否使用 delete、能否需改属性特性、或能否修改访问器属性、,false 为不可重新定义,默认值为 true

    enumerable:false,对象属性是否可通过 for-in 循环,flase 为不可循环,默认值为 true

    writable:false,对象属性是否可修改,flase 为不可修改,默认值为 true

    value:‘xiaoming’ 对象属性的默认值,默认值为 undefined

    Object.defineProperty 可以使用该方法给对象添加属性或者对已有的属性进行修改,并可以修改对象属性特征。

    例:

    Object.defineProperty(Person,"name",{
    value:"小明",
    configurable:false,
    writable:false,
    enumerable:false
    })
    
    • Object.hasOwnProPerty();用于检测该对象中是否含有该属性。
    • 先修改 configurable 在修改 writable 没有任何问题,反之,configurable 则不能被修改。

对象的继承

  1. 构造函数继承(此方法不太合适,不建议使用)
   		function SystemUser(name,age) {
           Person.call(this,name,age)
     }
     SystemUser.prototype=Person.prototype;
     SystemUser.prototype.constructor=SystemUser;
  1. 对象合并
  • Object.keys(对象名),拿到对象的属性名集合。
  • Object.assign(对象 1,对象 2,对象 3.。。。。。。。),将第一个对象后面的所有对象合并到第一个对象。重名的属性覆盖。
  • 借助 js 高级语法 …:将对象里的内容展开

    var obj={…obj1,…obj2},将两个对象合并到一起。

  1. 通过修改对象.prototype=对象,来实现继承效果
 例:
 function Animal(type) {
 this.type = type;
 }
 Animal.prototype.say = function () {
 console.log("我是" + this.type + "动物");
 };
 var CatAnimal = new Animal("猫科类");
function Cat(name, age) {
 this.name = name;
 this.age = age;
 }
Cat.prototype = CatAnimal;
 Cat.prototype.getName = function () {
 console.log("我的名字是" + this.name);
};
  • 注意:先继承之后在添加新的方法,否则添加的方法会被覆盖。

标签:...,prototype,false,name,对象,JavaScript,简记,属性,构造函数
来源: https://blog.csdn.net/weixin_45124398/article/details/115557488

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有