1、OOP之修改继承:

①child._proto_=father;=》Object.setPrototypeOf(child,father);每次只能修改一个对象的父对象;

②构造函数.prototype=father,在创建对象之前修改,可批量修改所有子对象的父对象;

③当多个子类型拥有相同属性结构和共有方法,可抽象出该属性和方法,定义到一个公共父类型中;——子类型的原型对象继承服类型的原型对象(继承inherits),Object.setPrototypeOf(子类型构造函数.prototype,父类型构造函数.prototype);——在子类型构造函数中借用父类型构造函数(扩展extends);父类型构造函数.call(this,属性参数)/父类型构造函数.apply(this,arguments);

2、call与apply异同:

相同:都是强行调用函数,并替换函数中的this为指定对象;不同:call的每个参数独立传入;apply所有参数统一传入;

3、ES5之数据属性:实际存储属性值的属性;

①四大特性:a、value:实际存储属性值;b、writable:是否可读;c、enumerable:能否被遍历;d、configurable:以上特性能否修改;

②查看特性:Object.getOwnPropertyDescriptor(obj,“属性名”);

③修改特性:Object.defineProperty(obj,“属性名”,{特性:值,……});(只能修改一个属性的特性,四大特性默认为false;);

④修改多个属性的特性:Object.defineProperties(obj,{属性名:{特性:值,……},……});

4、访问器属性:不直接保护属性值,为其他数据提供保护;

①四大特性:a、get:function(){return 受保护的属性的值};b、set:function(val){受保护的属性=val};c、enumerable:能否被遍历;d、configurable:以上特性能否修改;

②创建:Object.defineProperty(obj,“属性名”,{get:function(){return 受保护的属性的值},set:function(val){受保护的属性=val}});

5、防篡改:防止对已经创建好的对象的属性进行更改;

①防扩展:禁止向对象中添加新属性;a、设置对象防扩展:Object.preventExtensions(obj);b、设置obj的内部属性extensiable为false;

②密封:设置所有属性的configurable为false;对象密封:Object.seal(obj);

③冻结:所有属性禁止增减,属性值禁止修改;专门定义一个对象,集中保存使用的所有常量,将该对象密封,Object.freeze(obj);

6、Object.create():基于现有父对象创建新子对象,继承父对象,同时扩展自有新属性;

例:var child=Object.create(father,{属性名:{特性:值,……}……});若无新特性,省略第二个参数;

javascript_core_09之继承、属性、对象的更多相关文章

  1. python 零散记录(七)(下) 新式类 旧式类 多继承 mro 类属性 对象属性

    python新式类 旧式类: python2.2之前的类称为旧式类,之后的为新式类.在各自版本中默认声明的类就是各自的新式类或旧式类,但在2.2中声明新式类要手动标明: 这是旧式类为了声明为新式类的方 ...

  2. HTML DOM 属性 对象

    HTML DOM 属性 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 所有的都是 节点: 文档是文档节点 所有 HTML 元素是元素节点 所 ...

  3. Spring Boot 环境变量读取 和 属性对象的绑定

    网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...

  4. js属性对象的hasOwnProperty方法

    Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性. 判断自身属性是否存在 var o = new Object(); o.prop = 'ex ...

  5. openerp学习笔记 对象继承,对象初始化数据

    1.对象继承     _inherit = "product.product" 继承产品对象,给产品对象添加字段或方法,不需要设置 _name._table 等属性     注意: ...

  6. archaius(4) 属性对象

    讲完上一节,我们就可以使用合理的配置管理器或者实现自己的配置管理来管理我们的配置项了.archaius还提供了一种新的配置使用的方式. 动态属性对象 动态属性对象针对每个配置项以对象方式进行操作,并且 ...

  7. JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法

    1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...

  8. 学习pthreads,使用属性对象创建结合线程和分离线程

    当我们创建了子线程,是让它犹如脱缰之马,信步驰骋,还是如乖巧听话的孩子,时不时教导一下呢?针对这个问题,本文介绍线程的结合和分离,结构分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部 ...

  9. css常用的可继承属性和不可继承属性

    不可继承属性1.display2.text-decoration 添加文本样式3.list-style4.盒子模型属性(如padding系列,border系列,margin等,width,height ...

随机推荐

  1. HibernateUtil

    package com.ssh.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.Standa ...

  2. 黑马程序员_Java基础:集合总结

    ------- android培训.java培训.期待与您交流! ---------- 一.集合概念 相信大家都知道,java是一门面向对象的编程语言,而对事物的体现都是以对象的形式,所以为了方便对多 ...

  3. MATLAB不运行也不报错

    今天本来挺激动找到能运行的好几个程序 MATLAB忙到busy也是停不下来 本来不以为然 结果呢 吃了个水果 一杯水都喝下去了 还没结果(⊙o⊙) 这时候解决办法只有一个 Ctrl+c

  4. jqm页面跳转问题

    jqm里面页面跳转默认都是通过ajax请求的,必须重新刷新页面js方可有效,也就是js没有起作用,并不是js本身的问题,下面说说解决方法: 在使用jQuery Mobile进行Web开发中,当页面跳转 ...

  5. Android 把电话保存到现有联系人 已有联系人

    搜索了很长时间,想找个把电话保存到现有联系人的代码,就是打开选中的联系人编辑界面,然后自动添加电话,再手动保存,就跟手机上的一样,功夫不负有心人,终于给搜到了,很不容易啊,现分享如下, // 保存至现 ...

  6. Android—LayoutInflater学习笔记

    LayoutInflater的的主要用处:使用LayoutInflater来载入界面,类似于findViewById()在Activity中加载Widget组件一样.区别在于与LayoutInflat ...

  7. 多线程_先产后销_运行结果有BUG

    class Shop { public static void main(String[] args) { Things t=new Things(); Custom c=new Custom(t); ...

  8. java获取路径的方法

    package com.zjf; import java.io.File; public class GetPath { public static void getPath() { //方式一 Sy ...

  9. 由 s:hidden 引起的文本框内容不能传到 struts的Action中

    <s:form id="startForm" name ="startForm" action="/hall/hall_startList.do ...

  10. SQL入门经典(六) 之视图

    视图实际上就是一个存储查询,重点是可以混合和匹配来自基本表(或其他视图)的数据,从而创建在很多方面象另一个普通表那样的起的作用.可以创建一个简单的查询,仅仅从一个表(另一个视图)选择几列或几行,而忽略 ...