JS面向对象--1.认识对象

作者: FF_C | 来源:发表于2017-11-28 16:53 被阅读0次

对象在JS中有狭义对象和广义对象

所谓的狭义对象 就是用{}这种字面量的形式定义的对象 它是一组属性的无序集合

//狭义对象,就是一组值的封装,除了4个值之外,什么都没有

var obj = {

name: "小明",

age: "12",

sex: "男",

hobby: ['打球','看电视']

}

alert(obj.hobby[1])  //看电视

上面这个对象,表示一个 人 ,里面有4个属性

比如我们现在不用对象 ,而是使用数组来存存储一组刚才的值

var 0 =['小明',12,'男','['打球','看电视']']

alert(o[1])   //Uncaught SyntaxError: Unexpected number

数组只能存储值 ,不能存储健,换句话说,数组里的值 的 "语义"并不详细,对象除了能存储值,还能存储语义。

值 的语义,属于上叫做keys,健

也就是说:对象就是一组值和语义的封装

//广义对象 是一个对象 ,但是你感觉它除了一组属性还有别的东西

比如DOM元素是对象 ,但是和我们刚才说的狭义对象”里面只有一组值 别的什么 都没有“不同

// 下面这个O是一个DOM元素,它也是一个对象

var 0 =  document.getElementById('box');   //得到一个DOM对象

alert(typeof o);   //object

//下面给这个DOM元素添加属性

o.name = "小 明";

o.age =12;

alert(o.age)

我们通过DOM方法得到了一个DOM对象,此时可以通过点语法来给这个对象添加属性name,sex,hobboy属性。此时可以通过o.name访问他的name属性。此时 ,你不能说主穿上对象 只有name,age,hobby这三个属性,别的什么 都没有。因为这个o 毕竟是有一个HTML标签实体在页面上

//数组也是对象

我们也可以通过点语法 给数组添加属性

arr.name='小红';

arr.age=12;

arr.hobby =['打架','抽烟','喝酒'];

alert(arr.sex);

说 明数组有对象的一切特征,就是能够添加属性,但你不能说这个数组此时只有name age hobby三个属性

别的都没有 ,毕竟他有一组数

函数也是对象 ,但是typeof运算符检测类型 ,返回的结果 是function,不是object,这是系统规定,但是
function也是object

function fun(a,b){

alert(a+b)

}

//此时我们要证明这个fun也是一个对象,怎么证明 ,给他加属性,如果能加上属性就说明是对象

alert(typeof fun);  //function

fun.name ='小刚',

fun.age =34,

fun.hobby = ['lol','DOTA','cs']

alert(fun.name)

此时对象添加属性成功,添加了三个属性,但是你不能说这个fun对象就只有三个属性别的什么都没有,因为它毕竟 是一个函数,能够加圆括号执行

再比如,正则表达式也是对象

var regexp = /\d/g;

alert(typeof regexp);  //object

regexp.name ='小青';

alert(regexp.name);

添加属性成功 但你不能说它只有这几个属性 毕竟它是一个正则

也就是说 系统内置的所有引用类型值 都是对象 ,他们都能添加自定义属性 并且能够访问这些属性

比如
{}对象

function函数

array数组

regexp正则表达式

DOM元素

window ,document,Math,Date对象

Number,String内置包装构造函数得到的值

但是这些对象除了一组属性之外,还有其他的东西,比如数组还有一组值;比如函数还有一组语句,能够圆括号执行

什么不是对象,就是系统的基本类型值

数字不能加属性,因为数字是基本类型值,不是对象

var a =100;

a.name ='小强';

a.age =12;

alert(a.age); //undefined

//a不是一个对象 a是通过字面量增加的

var str ='你好';

str.haha=123;

alert(str.haha) //undefined

字符串不能加属性,因为字符串是基本类型值,不是对象。

那么到底有什么性质,我们就称它是对象呢?能够添加属性。特别的,微观层面,只要这个东西存放在堆内存中,就可以认为是一个对象。

相关文章

  • JS面向对象--1.认识对象

    对象在JS中有狭义对象和广义对象 所谓的狭义对象 就是用{}这种字面量的形式定义的对象 它是一组属性的无序集合 /...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • js高级 第一章

    JS面向对象编程 一、什么是面向对象思想(编程思想角度)? 现有的两种程序思想:面向过程和面向对象 1.面向过程...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • JavaScript笔记(一)

    一、面向对象面向过程的区别 1、什么是js对象 js对象:属性和方法的集合,js所有数据都可以看成对象...

  • 面向对象OOP--JS

    作者:烨竹 JS面向对象简介 JS名言:万物皆对象 JS面向对象比PHP简单很多;因为JS中没有class关键字,...

  • JS高级3-语言特性

    一、 JS面向对象编程 1、 面向对象介绍 什么是对象? Everything is object (万物皆对象)...

网友评论

    本文标题:JS面向对象--1.认识对象

    本文链接:https://www.haomeiwen.com/subject/sbjebxtx.html