通过原型 继承创建一个新对象,对于这一个函数的有说不出的感觉,看看语句都很简单,深层次的东西就是不知道

function inherit(p)

{

  if(p == null)  throw TypeError();

  if(Object.create)

    return Object.create(p);

  vart t=typeof p;

  if(t !== "object" && t !== "function") throw TypeError();

  function f(){};

f.prototype=p;

    return new f();

}

6.2属性的查询和设置

  用  . 和[]  来访问和设置。

6.2.1 作为关系数组的对象       我看完后总结的一句话就是这一段的讲用【】可以动态指定属性名称。

  6.2.2 继承

    现在假设给对象的o的属性x赋值,如果o已经有属性x(非继承),那只改变已有属性x的值。如果o不存在属性x,那么赋值操作给o添加 一个新属性x。如果

    之前o继承自属性x,那么这个继承的属性就被新创建的同名属性覆盖 了。

    例外:

      如果o继承自属性x,而这个属性是一个具有setter方法的accessor属性(参照6.6),那么将调用setter方法而不是给o创建一个属性x.需要注意的是,

    setter方法是由对象o调用的,而不是定义这一个属性的原型对象调用的。

  6.2.3属性访问错误

      访问不存在的属性不会报错,返回undefined.  访问不存在对象的属性,会报错。所以要用以下简练的书写方法

      var len = book && book.subtitle && book.subtitle.length;

      给null 和undefined设置属性也会报类型错误。

      给其他值设置属性也不总是成功,有一些属性是只读的,不能重新赋值,有一些对象不允许新增属性,但让人颇感意外的是设置属性的失败操作不会报错。

      尽管属性赋值成功或失败的规律看起来很简单,但要描述清楚并不容易。在这些场景下给对象o设置属性p会失败:

      以下情况给对象o设置属性p会失败:

        o中的属性p是只读的:不能给只读属性重新赋值(defineProperty()方法中有一个例外,可以对可配置的只读属性重新赋值)。

        o中的属性p 是继承属性,且它是只读的:不能通过同名自有属性覆盖只读的继承。

        o中不存在自有属性p:o没有使用setter方法继承属性p,并且o的可扩展性(extensible attribute)是false。如果o中不存在p,而且

        没有setter方法可供调用,则p一定会添加至o中。但如果o不是可扩展的,在o中不能定义新属性。

看到这里的时候有问题要问自己就是,怎么设置一个只读属性?

   什么是extensible attribute  可扩展属性。

第六章 对象-javaScript权威指南第六版(二)的更多相关文章

  1. 第六章 对象-javaScript权威指南第六版

    什么是对象? 对象是一种复合值,每一个属性都是都是一个名/值对.原型式继承是javaScript的核心特征. 对象常见的用法有,create\set\query\delete\test\enumera ...

  2. 第六章 对象-javaScript权威指南第六版(四)

    6.6 属性getter和setter 对象属性是由名字.值和一组特性(attribute)构成的. getter和setter定义的属性称做"存取器属性"(accessor pr ...

  3. 第六章 对象-javaScript权威指南第六版(三)

    6.3 删除内容 delete运算符可以删除对象的属性. delete运算符只能删除自有属性,不能删除继承属性. delete表达式删除成功或没有任何副作用时,它返回true. 6.4 检测属性 用i ...

  4. 《JavaScript权威指南 第六版 中文版》(一)

    <JavaScript权威指南 第六版 中文版> 第二章 词法结构 2.1字符集 JavaScript是使用Unicode字符集编码写的. 2.1.1区分大小写 JavaScript是区分 ...

  5. 《JavaScript权威指南(第6版)(中文版)》PDF

    简介自1996年以来,JavaScript的:权威指南已为JavaScript圣经程序员,程序员指南和全面的参考,以核心语言和客户端JavaScript API的Web浏览器定义.第6版包括HTML5 ...

  6. javascript权威指南第6版学习笔记

    javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...

  7. JavaScript权威指南(第6版)(中文版)笔记

      JavaScript权威指南(第6版)(中文版)笔记      

  8. 【笔记】javascript权威指南-第六章-对象

    对象 //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...

  9. Note | Javascript权威指南[第六版] 第1章:Javascript概述

       JavaScript是一门高端的.动态的.弱类型的编程语言,非常适合面向对象和函数式的编程风格.JavaScript的语法源自Java,它的一等函数(first-class function)来 ...

随机推荐

  1. [Machine Learning] 浅谈LR算法的Cost Function

    了解LR的同学们都知道,LR采用了最小化交叉熵或者最大化似然估计函数来作为Cost Function,那有个很有意思的问题来了,为什么我们不用更加简单熟悉的最小化平方误差函数(MSE)呢? 我个人理解 ...

  2. centos6.5 配置静态IP

    1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static HWADDR=08:00:2 ...

  3. 初识springboot(傻瓜式教程)

    初识springboot(傻瓜式教程) 项目所需的版本 IDEA 2018 maven 3.x jdk-1.8 IDEA创建spring-boot项目(maven方法) 1.创建一个maven工程 点 ...

  4. python2 线程基础

    1,感谢菜鸟教程, 线程基础:导入,创建函数,创建线和运行 import thread import time # 为线程定义一个函数 def print_time(threadName, delay ...

  5. 51nod 2512

    看错题目!!啊啊啊,都说了不能有前导,我怎么这么想当然呢!!另外1也是2的幂次方 代码: #include<iostream> #include<cstdio> #includ ...

  6. #2018-2019-2-20175204 张湲祯 实验一 《Java开发环境的熟悉》实验报告

    2018-2019-2-20175204 张湲祯 实验一 <Java开发环境的熟悉>实验报告 一.实验内容及步骤 一.使用JDK编译.运行简单的Java程序 1.输入cd zyz命令进入z ...

  7. php跨域问题记录

    记录跨域问题 一.问题 在控制层加了如下代码: header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN'] ); header('Ac ...

  8. Depp Learning note Day1

    1.softmax函数的优化来防止溢出 2.np.argmax()函数的使用 返回值为数组中最大值的索引 a = [1, 2, 3, 4, 3, 7] print(np.argmax(a)) 若np. ...

  9. Triplet Loss(转)

    参考:https://blog.csdn.net/u013082989/article/details/83537370 作用:用于对差异较小的类别进行区分

  10. wireshark & fiddler

    wireshark display filterhttps://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSec ...