您的位置:首页 > 房产 > 建筑 > JS进阶-深入对象

JS进阶-深入对象

2024/12/23 8:39:46 来源:https://blog.csdn.net/m0_64105917/article/details/140311523  浏览:    关键词:JS进阶-深入对象

学习目标:

  • 掌握深入对象

学习内容:

  1. 创建对象三种方式
  2. 构造函数
  3. 实例成员&静态成员

创建对象三种方式:

  • 利用对象字面量创建对象
 const o = {name: '佩奇'}
  • 利用new Object创建对象
 const obj = new Object({ uname: '雪碧宝宝' })console.log(obj)
  • 利用构造函数创建对象
 <title>自己定义构造函数创建对象</title>
</head><body><script>//创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)console.log(p)// const pepa = { uname: '佩奇', age: 6 }// const obj = new Object()</script></body>

构造函数:

构造函数:是一种特殊的函数,主要用来初始化对象。

使用场景:常规的{...}语法允许创建一个对象。比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一遍,此时通过构造函数快速创建多个类似的对象

 //创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('乔治', 3)console.log(p)

注意
构造函数在技术上是常规函数。

不过有两个约定:

  1. 它们对的命名以大写字母开头。
  2. 它们只能由new操作符来执行。

说明
3. 使用new关键字调用函数的行为被称为实例化
4. 实例化构造函数时没有参数时可以省略( )
5. 构造函数内部无需写return,返回值即为新创建的对象。
6. 构造函数内部的return返回的值无效,所以不要写return
7. new Object( )new Date( )也是实例化构造函数。

  • 小结:
  1. 构造函数的作用是什么?怎么写呢?

构造函数是来快速创建多个类似的对象
大写字母开头的函数。

  1. new关键字调用函数的行为被称为?

实例化。

  1. 构造函数内部需要写return吗,返回值是什么?

不需要。
构造函数自动返回创建的新的对象。

  • 练习:
 <title>练习-利用构造函数创建多个对象</title>
</head><body><script>function Goods(name, price, count) {this.name = namethis.price = pricethis.count = count}const mi = new Goods('小米', 1999, 20)console.log(mi)const hw = new Goods('华为', 3999, 59)console.log(hw)const vv = new Goods('vivo', 1888, 100)console.log(vv)// const date = new Date('2024-7-9')// console.log(data)</script></body>
  • 实例化执行过程

说明:

  1. 创建新对象。
  2. 构造函数this指向新对象。
  3. 执行构造函数代码,修改this,添加新的属性。
  4. 返回新对象。
 //创建一个猪 构造函数function Pig(uname, age) {this.uname = unamethis.age = age}// console.log(new Pig('佩奇', 6))// console.log(new Pig('乔治', 3))const p = new Pig('佩奇', 6)const Georage = new Pig('乔治', 3)console.log(p)

实例成员&静态成员:

  • 实例成员

通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员

说明:

  1. 实例对象的属性和方法即为实例成员。
  2. 为构造函数传入参数,动态创建结构相同但值不同的对象。
  3. 构造函数创建的实例对象彼此独立互不影响。
//实例成员和静态成员//1.实例成员:实例对象上的属性和方法属于实例成员function Pig(name) {this.name = name}const peiqi = new Pig('佩奇')const qiaozhi = new Pig('乔治')//构造函数创建的实例对象彼此独立互不影响peiqi.name = '小猪佩奇' //实例属性peiqi.sayHi = () => {   //实例方法console.log('hi~')}console.log(peiqi)console.log(qiaozhi)//为构造函数传入参数,动态创建结构相同但值不同的对象console.log(peiqi === qiaozhi) //false  
  • 静态成员

构造函数的属性和方法被称为静态成员(静态属性和静态方法)。

说明:

  1. 静态成员只能构造函数来访问。
  2. 静态方法中的this指向构造函数。

比如Date.now( )Math.PIMath.random( )

 //2.静态成员:构造函数上的属性和方法称为静态成员function Pig(name) {this.name = name}Pig.eyes = 2 //静态属性Pig.sayHi = function () { //静态方法console.log(this)}Pig.sayHi()console.log(Pig.eyes) //2
  • 小结:
  1. 实例成员(属性和方法)写在谁身上?

实例对象的属性和方法即为实例成员。
实例对象相互独立实例成员当前实例对象使用。

  1. 静态成员(属性和方法)写在谁身上?

构造函数的属性和方法被称为静态成员。
静态成员只能构造函数访问。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com