权威指南学习心得-对象

对象的属性特性:

1、可写(writable)

2、可枚举(enumerable)

3、可配置configurable

对象特性:

1、对象的原型(prototype)

2、对象的类(class)

3、对象的扩展标记

对象的种类

1、内置对象(数组、函数、日期和正则表达式)

2、宿主对象 htmlelement

3、自定义对象

属性的种类

自有属性

继承属性

原型:

每一个js对象(null和Object.prototype除外)都和另一个对象相关联,每一个对象都从原型继承属性

对象直接量({})和new Object的原型对象是Object.prototype

函数对象(function(){})的原型是Function.prototype

Date对象(new Date())的原型是Date.prototype

Array对象(new Array或者[])的原型是Array.prototype

RegExp对象(new RegExp())的原型是RegExp的原型是RegExp.prototype,

new加构造函数的对象的原型是构造函数的原型

其他原型对象都是普通对象,普通对象都具有原型。所有的内置构造函数(Function Array Date RegExp)以及自定义的构造函数都具有一个继承自Object.prototy的原型,比如Data.prototype的属性继承自Object.prototype,因此由new Date()创建的Date对象的属性同时继承自Date.prototype和Object.prototype.这一系列连接的原型对象就是所谓的原型链

Object.create()创建一个新对象,其中第一个参数是这个新对象的原型

var o={x:1,y:2};
var t=Object.create(o);
console.log(t.x);//1
var t2=console.log(Object.create(Object.prototype));//{}

function inherit(p){
  if(p==null) throw TypeError();
  var t=typeof p;
  if(t!=="object"&&t!=="function"){
    throw TypeError();
  }
 var f=function(){};
  f.prototype=p;
  return new f();

}

var t3=inherit(o);
console.log(t3.x);//1

继承

属性赋值要么失败,要么创建一个属性,要么在原始对象中设置属性

属性访问错误

查询一个不存在的属性并不会报错,如果在对象O自身的属性或者继承的属性中均未找到属性x,属性表达式o.x则返回undefined

但是。如果对象不存在,那么试图查询这个不存在的对象的属性就会报错

简练和保险的做法

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

时间: 2024-10-21 02:27:58

权威指南学习心得-对象的相关文章

权威指南学习心得-浏览器中的js

window对象:表示web了浏览器的一个窗口或窗体(winow属性引用自身) 含有以下属性:location包含Location对象,指定当前显示在窗口中URL,允许脚本往窗口里载入新的URL 含有以下方法: alert(),setTimeout(): document属性 引用Document对象,后者表示显示在窗口中的文档,它包含有一些重要方法,比如getElementById(),返回Element对象,这个对象有其它重要的属性和方法.每个Element对象都有style和classNa

权威指南学习心得-类

构造函甚至不必返回这个新创建的对象,构造函数会自动创建对象,然后将构造函数当作为这个对象的方法来调用一次,最后返回这个新对象. 任何javascript函数都可以用作构造函数,并且调用构造函数是需要用到一个prototype属性的.因此,每个javascript函数(除了ecmascript 5中的Function.bind方法返回的函数之外)都自动拥有一个prototype属性.这个属性的值是一个对象.这个对象包含唯一一个不可枚举属性constructor.constructor属性的值是一个

权威指南学习心得-语句

函数 //递归函数 function factorial(n){ if(n<=1){ return 1; } else { return n*arguments.callee(n-1); } } console.log(factorial(4));//24 函数作用域是指函数内声明的所有变量在函数体内始终是可见的,意味着变量在声明之前甚至已经可用,被称为声明提前,即函数里所有声明的所有变量(但不涉及赋值)都被提前至函数的顶部 全局变量在程序中始终都是有定义的.局部变量在声明它的函数体内以及其所嵌

权威指南学习心得之运算符和表达式

1.数组 数组直接量中的列表逗号之间的元素可以忽略,这是省略的空位自动填充值undefined,元素列表结尾处可以留下单个逗号,这时并不会创建一个新的值undefined 2.操作符 属性访问和函数调用排在最高级 一元操作符.赋值.三元条件运算符都具有从右到左的结合特性. + 加法运算符的转换规则优先考虑字符串连接,如果其中一个操作数是字符串或者转换为字符串的对象,则另外一个操作数也转换为字符串,加法将进行字符串的连接操作.如果两个操作数都不是类字符串,那么将进行算术加法运算 1.如果其中一个操

权威指南学习心得-数组

所有的索引都是属性名,但是只有在0~2(32)-2之间的整数属性名才是索引,所有的数组都是对象,可以为其创建任意名字的属性.但如果使用的属性是数组的索引,数组的特殊行为就是将根据需要更新它们的length属性值. 数组的添加: 1.通过索引赋值 var a=[];a[0]="zero";a[1]="one"; 2.使用push方法在数组末尾增加一个或者多个元素 var a=[];a[0]="zero";a[1]="one";a

权威指南学习心得

1.数据类型 数字 布尔 字符串 undefined null 对象 2.对象 普通对象:命名值的无序集合: 由构造函数初始化的对象组成的集合 特殊对象:1.数组对象(Array)带编号的值的有序集合 2.函数对象(Function) 3.日期对象(Date) 4.正则表达式对象(RegExp) 5.错误类(Error) 3.null和undefined无法拥有方法 4.不在任何函数内声明的变量叫做全局变量 在函数内声明的变量具有函数作用域,并且只在函数内可见 5. 常用Math对象的方法 Ma

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命

JavaScript权威指南学习笔记之一

1.关于分号 javascript里面不强制使用分号来表示一行语句的结束,但是最好能够在写js之前,特别是在原有的js上面新增时,最好前置一个分号.避免这种情况发生:  2.JavaScript类型转换 3.关于=== ①如果类型不同则不等 ②null===null或undefined===undefined ③true===true或false===false ④NaN不等 ⑤0===0 0===-0 ⑥如果是同一个object,array,function则相等 4.关于== ①如果已经==

Hadoop权威指南学习笔记三

HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm Hadoop说白了就是一个提供了处理分析大数据的文件集群,当中最重要的无疑是HDFS(Hadoop Distributed File System)即Hadoop分布式文件系统. 1. HDFS是一种以流式数据訪问模式(一次写入多次读取的模式)存储超大文件的系统. 其不须要的高端的硬件系统