js 对象是什么 太难理解了

JavaScript024

js 对象是什么 太难理解了,第1张

我来根据我的理解回答一下LZ的问题,如果有不对的地方还请多多指教!

1.cc //这个是函数体本身,用在给函数添加或者调用属性一类的事情

2.cc() //执行函数体

3.new cc() //创建一个cc函数的对象,如果你理解面象对象的话,就会很容易理解

关于this

this在函数体里的含义不相同,就function cc(){this.i="cc"}而言,如果没有创建对象,那这个this就代表window对象,这时候你如果执行cc()的话,window对象中就会有一个值为"cc"的属性i.如果创建了一个cc对象:var c=new cc()这时候this指的就是新建的对象c.

关于prototype

JavaScript的所有function类型的对象都有一个prototype属性.这个prototype 属性本身又是一个object 类型的对象,因此我们也可以给这个prototype 对象添加任意的属性和方法.

关于this和prototype区别

this的级别高于prototype,举个例子

function cc(){this.i="cc"}

cc.prototype.i="aa"

alert(new cc().i)// i="cc"

这时候如果把this.i="cc"去掉的话,则会显示"aa"

关于new cc().prototype

前面说过,function类型的对象都有一个prototype属性,而如果new cc().prototype这么写,就相当在cc()的对象上创建了一个名字为prototype属性,它的值为undefined,没有实际意义.

cc={}这种形式就是创建了一个对象的简写,和cc=new Object()一样. 对象里有两个属性width和height.

他妈的arguments 的意思就是函数的实参,比如

function cc(){alert(arguments[0])}

cc("参数一")

cc.apply()的原形是cc.apply(func,args[])意思就是在名为func的函数中加入一个cc函数,args是cc函数的参数,用数组形式表示. 执行完这条以后就可以在func的对象中调用cc函数了

和apply()相似的是call().两个作用相同,只是call(func,arg1,arg2,...)里面的参数不是数组形式,要用逗号隔开写

希望对LZ有所帮助,如果大家觉得有什么不对的地方请尽情提出!谢谢!

对象是复杂数据类型,定义了无序键值对的集合

delect obj.name 删除属性名和值

obj.name = undefined 删除属性值

name in obj &&name === undefined 判断含有属性名,但值为undefined

注意 name === undefined 不能判定 name 是否为 obj 的属性

Object.key(obj) 查看对象的所有属性名

Object.values(obj) 查看对象的所有属性值

Object.entries(obj) 查看对象的所有属性名和属性值

console.dir(obj) 查看共有属性和自身属性

name in obj 判断属性名是否存在,不会区分自身属性和共有属性

obj.hasOwnProperty('name') 判断对象自身拥有的属性,不包含共有属性

属性存在则修改,没有则增加

批量赋值,ES6 新出

Object.assign(obj, {p1 = 1, p2 = 2, p3 = 3})

推荐有一下几种方式:

1.对象字面量创建对象

var

obj

=

{

a:1,b:2

}

注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。

2.通过new运算符创建对象

var

obj

=

new

object()

//创建空对象

var

ary

=

new

array()

//创建空的数组对象

注意:new运算符后面跟的是一个函数调用,这个函数被称为构造函数。js中原始类型都包含内置的构造函数,也可以自己定义构造函数。

3.通过立即执行函数创建对象

var

obj

=

(function(){

return

{x:1,y:2}}())

注意:在立即执行函数内部一定要有return语句,return出的内容就是待创建的对象。