原文

  https://www.jianshu.com/p/88213b499c4b

大纲

  前言
  1、对象的相关概念
  2、对象的创建(简单创建)
  3、对象的属性
    3.1、数据属性
    3.2、访问器属性
  4、设置和读取对象中的属性
  5、变量存储的是对象的引用
  6、基本数据类型可以自动转换成对象数据类型
  7、获取对象属性的点方法和中括号法的区别

前言

  以下论述是我关于对象的知识点的认识和理解,其中包括了对象是什么?创建对象的基本方式以及对象的相关概念的讲解,希望能给读者带来一些帮助。

1、对象的相关概念

  1、ECMAScript是基于对象(Object)的,对象是属性(properties)的集合,每个属性有零个或多个特性(attributes),它确定怎么使用此属性。
    
  2、ECMAScript通过对象确定调用者要调用的地方,通过调用对象的属性和方法可以来满足调用者要怎么调用对象。
    
  3、ECMAScript对对象的定义:无序属性的集合,其属性可以包含基本值、对象或者函数。
    
  4、对象是属性的集合,并有一个原型对象。原型可以是空值。严格来说,这就相当于说对象是一组没有特定顺序的值。
    
  5、对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。正因为这样,我们可以把ECMAScript的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数。
    
  6、JavaScript本身包含许多对象,这些对象称之为JavaScript的内建对象。
    
  7、浏览器自身也是对象集合的模型,可以通过浏览器对象来操作浏览器,浏览器对象模型(BOM),文档对象模型(DOM)
    
  8、对象的存在是为了解决基本数据类型的局限性
    
  9、对象是自我包含的数据集合,包含在对象里的数据可以通过两种形式——即属性(property)和方法(method)访问:      
        a:属性是隶属于某个特定对象的变量;
        b:方法是只有某个特定对象才能调用的函数。
  
  10、实例是对象的具体表现:对象是统称,实例是个体。
    
  11、有些对象(如:person)在JavaScript语言里并不存在。我们可以利用JavaScript语言来创建自己的对象——术语称之为用户定义对象(user-defined object)。有些对象
(如:Array、Date)在JavaScript语言中预先定义好的对象,而我们可以把这些对象直接在自己的脚本里运用,人们把这些对象称为内建对象(native object)。

2、对象的创建(简单创建)

//1、Object
var person = new Objcet();
person.name = "Nicholas";
person.age = 29;
person.job = "Software Engineer";
person.sayName = function(){
console.log(this.name);
}
//2、对象字面量
var person = {
name:"Nicholas";
age:29,
job:"Software Engineer",
sayName: function(){
console.log(this.name);
}
}

3、对象的属性

  ECMAScript中有两种属性:数据属性和访问器属性

3.1、数据属性

/*
数据属性包含一个数据值的位置,在这个位置可以读取和写入值
*/
var person = {
name : "Nicholas"
};
>/操作数据属性
/*
通过delete、add来操作数据属性
对未声明的数据属性进行赋值相当于先创建这个属性然后再对这个属性进行赋值
*/
'use strice'
var person = {
name : "personName",
age : 23
}
delete person.age;
person.type = 'chinese';
console.log(person);//{name: "personName", type: "chinese"} >/通过Object.defineProperty()
/*
可以通过
Object.defineProperty(ObjectName , attrituteName ,
{descriptor : true/false});
来操作对象的属性
*/
'use strice'
var person = {
name : "personName",
age : 23
}
console.log(person);//{name: "personName", age: 23}
person.name = "hh";
console.log(person);//{name: "hh", age: 23}
// Object.defineProperty(person,"name",{
// writable : false
// })//标准格式
Object.defineProperty(person,"name",{
writable : false,
value : "kk"
})
console.log(person);//{name: "kk", age: 23}
person.name = "gg";
console.log(person);//{name: "kk", age: 23}

3.2、访问器属性

/*
访问器属性不包含数据值:它们包含一对儿getter和setter函数(不过这两个函数都不是
必需的)。 在读取访问器属性是,会调用getter函数,这个函数负责返回有效值; 在写入访问器属性时,会调用setter函数并传入新值,这个函数负责决定如何处理数据
*/ >/ 操作访问器属性
//访问器属性:yyy
'use strice'
var book = {
_year : 2004,
edition : 1 };
console.log(book);
Object.defineProperty(book,"yyy",{
get:function(){
return this._year;
},
set:function(newValue){
if(newValue > 2004){
this.edition += newValue - this._year;
this._year = newValue;
}
}
});
console.log(book.yyy);
book.yyy = 2008;
console.log(book.yyy);
console.log(book);

4、设置和读取对象中的属性

//1、设置某个属性的特性
Object.defineProperty(ObjectName , attrituteName ,
{descriptor : true/false});
//2、设置多个属性的特性
Object.defineProperties(ObjectName , {attrituteName :
{descriptor : true/false} , attrituteName : {descriptor : true/false}});
//3、读取属性的特性
var descriptors = Object.getOwnPropertyDescriptor(ObjectName,attrituteName);
console.log(descriptors.descriptorName);

5、变量存储的是对象的引用

  1、当我们创建对象并把创建的对象赋值给一个用var声明的变量,这个变量中存储的是这个对象的地址,是这个对象的引用而不是对象本身的赋值。
  2、由于变量存储的是对象的引用,所以一些看似是对该变量‘对象’的操作,其实实质上是对这个变量包含的引用所指向的对象的操作,而不是对这个变量的操作,因为这个变量中不是什么对象,而是一个地址引用。

6、基本数据类型可以自动转换成对象数据类型

  1、对于一些基本数据类型,其实他们也具有对应的对象类型。
  2、当一些数据可以表明自己是哪种基本数据类型,当调用到该基本数据类型对应的对象数据类型的时候,JavaScript就会自动的将该基本数据类型转换成对象数据类型。

7、获取对象属性的点方法和中括号法的区别

//1、中括号法可以用变量作为属性名,而点方法不可以;
var obj = {};
obj.name = '张三';
var myName = 'name';
console.log(obj.myName);//undefined,访问不到对应的属性
console.log(obj[myName]);//张三 //2、中括号法可以用数字作为属性名,而点语法不可以; //3、中括号法可以使用js的关键字和保留字作为属性名,而点语法不可以(尽量避免在变量或者属性中使用关键字或保留字);

  

关于JavaScript对象概念的总结的更多相关文章

  1. javascript——对象的概念——函数 2 (内建函数与类型转换)

    javascript 有许多内建函数,用于各种操作,以下为常用的内建方法. 1.parseInt(object,int):将输入的 int 进制的值 object 转换为 10 进制的数值: obje ...

  2. javascript——对象的概念——Object(未完)

    http://www.blogjava.net/zkjbeyond/archive/2006/04/16/41336.html javascript中对象只包括属性和方法两种成员.ECMA-262 把 ...

  3. 如何理解javaScript对象?

    在我们生活中,常常会提到对象一词,如:你找到对象了吗?你的对象是谁呀?等等. 在我们家庭中,有男友的女青年都会说我有对象了,那么她的对象是XX(她的男友). 夫妻间呢?都会说我的爱人是谁谁谁,现在我们 ...

  4. 深入学习JavaScript对象

    JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始 ...

  5. 深入浅出 JavaScript 对象 v0.5

    JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同.笔者主要参考<JS 高级程序设计>.<JS 权威指南>和<JS 精粹> 本文由浅入深 ...

  6. JavaScript基本概念(二)

    JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...

  7. 《JavaScript核心概念》基础部分重点摘录

    注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...

  8. JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)

    一.为什么jquery前面要写$ Javascript没有package的概念,而作者又希望所有jQuery相关的API都能通过一个全局性的对象来容纳. 名为jQuery的全局变量就是这样一个对象,不 ...

  9. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

随机推荐

  1. 18/9/21模拟赛-Updated

    18/9/21模拟赛 期望得分:100:实际得分:0  qwq 拿到题目第一眼,我去,这不是洛谷原题(仓鼠找Sugar)吗 又多看了几眼,嗯,对,除了是有多组数据外,就是原题 然后码码码....自以为 ...

  2. Codeforces 129A-Cookies(暴力)

    A. Cookies time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  3. Trafodion:Transactional SQL on HBase

    Trafodion: Transactional SQL on HBase HBase上实时分布式事务处理 介绍 HBase的SQL能力一直不足.Phoenix缺乏Join能力,eBay提出的kyli ...

  4. 更为详细的Txtsetup.sif文件解释

    更为详细的Txtsetup.sif文件解释;代码页定义, 以免文本安装模式下无法正常显示简体中文 (以下基本都是跟简体中文相关的, 不同语言版本的 Windows, 此处定义也不同)[nls]Ansi ...

  5. php课程 13-43 mysql的数据结构是什么

    php课程 13-43 mysql的数据结构是什么 一.总结 一句话总结:cs结构,客户端,服务器 1.常用的比较出名的数据库有哪些? SQL数据库(关系型):1.收费:DB2SqlserverOra ...

  6. 33.promise future多线程通信

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <thread> #include <futur ...

  7. 洛谷P2660 zzc 种田

    题目背景 可能以后 zzc就去种田了. 题目描述 田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力 ...

  8. 界面实例--旋转的3d立方体

    好吧,这里直接编辑源码并不允许设置css和js……毕竟会有危险……那直接放代码吧 <!DOCTYPE html> <html> <head> <meta ch ...

  9. 事件循环(Event Loop)

    1.什么是事件循环? JavaScript为单线程执行的,所以是从上到下依次执行,js分为两个任务,宏任务和微任务 首先执行宏任务(第一次就是执行所有的同步代码),再执行所有的微任务,执行完毕之后再次 ...

  10. Linux中删除文件,磁盘空间未释放问题追踪

    在客户使用我们产品后,发现一个问题:在删除了文件后.磁盘空间却没有释放.是有进程在打开这个文件,还是其它情况?我们一起来看看一下两个场景 一. 场景一:进程打开此文件 当一个文件正在被一个进程使用时. ...