首页 > 编程语言 >javascript 对象的细节

javascript 对象的细节

时间:2022-09-19 16:58:25浏览次数:84  
标签:name get 对象 javascript stu 细节 let 属性

对象的集中声明方式//方式一:let stu = {  name:'小明',

  age:'17',
  study:function(){
      console.log(this.name + '爱学习')
  }  
}
// 调用方式:
stu.name;
stu.study();

//方式二: let name='小明'; let age=17; let study = function(){ console.log(this.name + '爱学习')} let stu = {name,age,study} //直接在对象内部写变量名,就相当于变量名是name,变量值是'小明' //调用方式跟方式一是一致
//方式三: (重点掌握,用的最多的!) let stu = { name:'小明', age:'17', study(){ //对象内可以将function 和 :都拿掉,但这种写法只能在对象内 console.log(this.name + '爱学习') } }

调用对象中的属性

// 对象的定义结构

let obj = {
  属性名:值,
  方法名:函数,
  get 属性名(){}
  set 属性名(新值){}   
}

//属性如何用get和set读取和赋值

let stu = {
  //下划线只是一个约定 _name:null,//加下划线类似于java中的私有属性 ,但不是真的不能调用,std._name是有值的,但是不走get方法 get name() { return this._name}, set name(name){ this._name = name} } // 调用: std.name = '小白' //这里相当于赋值操作调用了set name方法 console.log(std.name) // 这样就相当于调用了get name方法

javascript特色:属性可以增、删

java的对象是以类为模板,里面的属性和方法都是固定的,但是javascript可以动态增加和删除里面的元素!

// 可以增加里面的属性

let stu = {name:'张三'}

stu.age = 18 //增加属性
console.log(stu)//打印结果 :{name='张三',age:18}

// 可以删除里面的属性
delete std.age//打印结果 :{name='张三'}
// 可以增加函数
std.study = function(){...}

//用defineProperty动态定义函数get和set方法
let sud={
  _name:null
}
Object.defineProperty(std,"name",{
  get(){ return this._name},
  set(name){this._name = name}
})

javascript中的this对象:有下面三种情况——落单函数、作为对象的方法、以及动态改变this

 

 

 其中有一个例外的情况,在箭头函数内出现的this,以外层的this理解

用匿名函数的时候,第1个this代表对象本身,因为在对象内部定义,所以可以读取friends数组

第2个this定义在一个落单函数内部,所以this属于window,window的name属性是空字符,所以打印

”与小白在玩耍“

”与小黑在玩耍“

”与小明在玩耍“

 

 

 

 

那么怎么让第2个this读取stu对象中的name而不是window中的name呢?

这里用箭头函数解决,箭头函数的this默认使用外层的this而不是window对象,这里外层就是stu对象。

还有一种不使用箭头函数,解决this调用外层对象的方法:这种方法多出现在没有发明箭头函数之前会经常这样使用。

 

标签:name,get,对象,javascript,stu,细节,let,属性
From: https://www.cnblogs.com/tangwei-fuzhou/p/16707354.html

相关文章

  • VBA中使用JAVASCRIPT
    PrivateSubCommandButton1_Click()DimjsstrDimsbAsStringDimoSCAsObjectDimiAsIntegerSetoSC=CreateObjectx86("MSScriptControl.ScriptControl")'......
  • Javascript_DOM操作
    Javascript_DOM操作一、关于Javascript与DOM1.JavaScriptJavaScript简称JS,是一种解释型脚本语言。JavaScript是一种轻量级编程语言。JavaScript是可插入HTML页面的编......
  • 日常开发记录-删除数组对象中的第三层 children 属性值
    代码:for(constkeyinoptions){//删除第三层children属性for(constiinoptions[key].children){deleteoptions[key].children[i].chi......
  • python函数参数传递 可更改对象 不可更改对象
    1、函数分为内联函数和自定义函数2、参数传递:在python中,类型属于对象,变量是没有类型的例如:[1,2,3] 是List类型,"Runoob" 是String类型,而变量a是没有类型,她仅仅......
  • RGW-对象篇
    rgw中,对象上传后,default.rgw.buckets.data:xattr:omap:nullomapheader:null在default.rgw.buckets.index中,会记录桶的分片信息。每个对象表示一个分片,每个分片对象......
  • 深入浅出 JavaScript 中的 this
    笔者最近在看你不知道的JavaScript上卷,里面关于this的讲解个人觉得非常精彩。JavaScript中的this算是一个核心的概念,有一些同学会对其有点模糊和小恐惧,究其原因,现在......
  • Javascript 字符串
    JavaScript字符串您能够使用单引号或双引号字符串长度内建属性length可返回字符串的长度:vartxt="ABCDEFGHIJKLMNOPQRSTUVWXYZ";varsln=txt.length;特殊......
  • OOP面向对象的七大设计原则
     一.开闭原则 OCP(Open-ClosedPrinciple)核心思想:对扩展开发,对修改关闭。好处:可以提高代码的可复用性。可以提高代码的可维护性。 二.里氏代换原则 LSP(LiskovSub......
  • JavaScript作用域
    JavaScript作用域在JavaScript中,对象和函数同样也是变量。在JavaScript中,作用域为可访问变量,对象,函数的集合。JavaScript函数作用域:作用域在函数内修改。......
  • JavaScript基础第四天
    函数函数可以实现代码复用,提高开效率function执行任务的代码块函数声明语法function函数名(){函数体}//例如functionfun(){console.log('hello')}......