首页 > 其他分享 >字面量,Object新增api,面向过程和面向对象,类构造函数

字面量,Object新增api,面向过程和面向对象,类构造函数

时间:2023-05-06 18:12:49浏览次数:46  
标签:console log age Object name api const 构造函数

/* 
字面量速写:
如果属性名和形参名一致,可以直接写形参名

方法速写:省略冒号和function
sayHello(){} //实际上是 sayHello :function(){} 

计算属性名
通过 []  计算出来  
*/

//方法速写
//字面量速写:
// function san(a,b,c,d){
//     const sayHello = function(){
//         console.log('a',this.a)
//     }
//     return{
//         a,  // 实际上是 a : a
//         b,
//         c,
//         d,
//         sayHello,
//     }
// }
// //console.log(san(1,2,3,4))//{a: 1, b: 2, c: 3, d: 4}
// const u = san(1,2,3,4)
// u.sayHello()


// const user = {
//     name: 'a',
//     sayHello(){//实际上是 sayHello :function(){} 
//         console.log(this.name)
//     }
// }
// user.sayHello()//a

const prop1 = 'name2'
const prop2 = 'sayHello1'

 const user = {
    //[prop1] 实际上就是name2 ; name2 : 'a'
    [prop1] : 'a',
    [prop2](){
        console.log(this[prop1])
    }
 }
 console.log(user)//{name2: 'a', sayHello1: ƒ}
user[prop2]()//a

  

/* Object新增api
Object.is(第一个值,第二值) 判断数字是否相等
特殊情况 +0 / -0 = true   NaN /NaN =false

Object.getOwnPropertyNames方法,规定数组排序方式如下:先排数字,在拍其他

Object.setPrototypeOf
 */
//Object.is
// const a = 11;
// const b = 11;
// console.log(Object.is(a,b))

const obj1 = {
    a:1
}
const obj2 = {
    b:2
}
Object.setPrototypeOf(obj1,obj2)
console.log(obj1)

  

面向过程:一步接着一步的去写,适合比为简单一点的项目,比如大象装冰箱(第一步:拿取大象;第二部:打开冰箱;第三步:扔进冰箱;第四部:关闭冰箱)
面向对象:找到关键词,比如大象装冰箱(找到关键词,大象和冰箱;写完后,在给大象/冰箱原型或者什么地方写入属性名属性值去用)
/* 类构造函数
传统构造函数问题:(参考类和构造函数语法题文件)
1。属性和原型方法定义分离,降低可读性
2.原型成员可以被枚举
3.默认情况下,构造函数仍然可以被当做普通函数使用

类的特点:
1.类声明不会提升,和let,const一样,存在暂时行死期(提前被调用)
2.类中所有代码在严格模式下进行
3.类所有方法不可枚举(如在原型上写的属性)
4.类所有方法内部无法被当做构造函数使用
5.类构造器必须使用new来调用


 */
//class 类型 Animal名
class Animal {
    //构造器
    constructor(type,name,age,sex){
        this.type = type,
        this.name = name,
        this.age = age,
        this.sex = sex
    }
    //写的方法
    print(){
        console.log(`[种类] , ${this.type}`);
        console.log(`[名字] , ${this.name}`)
        console.log(`[年龄] , ${this.age}`)
        console.log(`[性别] , ${this.sex}`)
    }
}
const a = new Animal('狗','旺财','1','男');
console.log(a)
 a.print();
 
 //因为在类里面写,所以只是打印Animal中的属性,不会打印原型的,也就不可枚举
for(var i in a){
    console.log(i)
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
  /* 类书写
      1.计算成员名称 : const prop = 'name';   [prop] : '测试'
      2.getter和setter:对于某个属性的值进行读取和设置,getter和setter控制的属性,不在原型上
      3.静态成员:构造函数本身的成员;应用场景:比如棋子,他的宽高,那么每个棋子都需要用到宽高;可以直接设置到静态成员上;使用static 关键字定义成员静态成员

      5.类表达式 :const aaa = class An{}
      6.装饰器 :@Obsolete ;当语法过期后,可以使用该语法给他注释掉

给age加下划线/其他特殊符号的目的是:告诉他人这个age不希望直接去使用
 */
      //class 类型 Animal名
      // class Animal {
      //   //构造器
      //   constructor(type, name, age, sex) {
      //     this.type = type; 
      //     this.name = name;
      //     this.age = age
      //     this.sex = sex;
      //   }
      //   //创建一个age属性,并给他加上getter,堵盖该属性,会运行该函数
      //   get age() {
      //     return this._age + "岁";
      //   }
      //   //创建一个age属性,给他加上setter,给该属性赋值,会运行给函数
      //   set age(age) {
      //     if (typeof age !== "number") {
      //       throw new TypeError("错了");
      //     }   
      //     if (age < 0) {
      //       age = 0;
      //     } else if (age > 100) {
      //       age = 100;
      //     }
      //     this._age = age;
      //   }

      //   //写的方法
      //   print() {
      //     console.log(`[种类] , ${this.type}`);
      //     console.log(`[名字] , ${this.name}`);
      //     console.log(`[年龄] , ${this.age}`);
      //     console.log(`[性别] , ${this.sex}`);
      //   }
      // }
      // var a = new Animal("狗", "旺财", 1, "男");
      // console.log(a);
      // // a.print();

      //静态成员
      class abc{
        constructor(name){
          this.name = name
        }
        static width = 50;
        static height = 50;
      }
      var a = new abc()
      console.log(abc.width)//只有构造函数本身有
      console.log(a.width)//新创建对象式没有这个的

      
    </script>
  </body>
</html>

 

标签:console,log,age,Object,name,api,const,构造函数
From: https://www.cnblogs.com/wsx123/p/17378205.html

相关文章

  • Intersection Observer API 实现图片懒加载
    1,为需要延迟加载的图片设置data-src属性。<imgsrc=""data-src="image.jpg"alt="图片">2,使用IntersectionObserverAPI监听可视区域内的元素变化,并将其data-src属性值赋给src属性,显示图片。constlazyLoadImg=newIntersectionObserver((entries,observer)=>{en......
  • Java之Object类
    1、Object类概述 Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类(可以在代码中明确地写出声明要“继承Object类”,没有任何错误)。当然,数组也继承了Object类。但是,接口是不继承Object类的。接口只是是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法,......
  • 如何通过代码接入手机在网状态 API
    引言在许多场景下,手机号码是一种常用的身份验证信息。而使用手机在网状态API可以判断出手机号码是否有效,在一定程度上提高了身份验证的准确性和安全性,它的出现和广泛应用,为各行各业提供了更为便利和高效的解决方案。本文将探讨该API的使用场景,使用思路以及如何通过代码接入......
  • zabbix通过api方式批量创建和删除主机
    zabbix库连接信息,文件名为Conn.pyimportpymysql"""获取后台数据库连接"""defCON():con=pymysql.connect(host='rm-xxx.xxxxx.rds.aliyuncs.com',user='xxx',password='xxxx',db=�......
  • TypeError: 'numpy.float64' object cannot be interpreted as an integer
    报错内容:Traceback(mostrecentcalllast):File"C:\Users\xuan\.conda\envs\pytorch1-6\lib\site-packages\scipy\sparse\_sputils.py",line225,inisintlikeoperator.index(x)TypeError:'numpy.float64'objectcannotbeinterpre......
  • Java获取pdd详情api接口、商品详情、商品描述、宝贝链接获取展示示例
    ​拼多多商品详情就是对拼多多商城中的宝贝的描述了,消费者们在进入到宝贝的详情页面后,可以通过这些描述去了解该款宝贝。其实这样也可以大大的增加商品的转化率。那么它的作用有什么呢?1.突出商品卖点:把商品的特色和突出点写表现出来,很更好的吸引到顾客,让顾客有点击和购买的欲......
  • Net Core Web Api 配置Swagger
    一、创建NETCoreAPI项目NETCore版本:NETCore2.21.创建coreweb应用程序2.选择API3.下图为生成后的项目二、安装Swagger1.打开NuGet包管理器2.搜索Swashbuckle.AspNetCore安装在项目上3.点击我接受三、配置Swagger对于ConfigureServices和Configure的配置点击可参考1.ConfigureS......
  • 一统天下 flutter - widget 自定义: 通过 SingleChildRenderObjectWidget 实现自定义
    源码https://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget自定义:通过SingleChildRenderObjectWidget实现自定义组件示例如下:lib\widget\custom\single_child_render_object_widget.dart/**通过SingleChildRenderObjectWidget实现自......
  • Springboot 系列 (30) - Springboot+HBase 大数据存储(八)| Springboot Client/Server
    Kerberos(SecureNetworkAuthenticationSystem,网络安全认证系统),是一种网络认证协议,其设计目标是通过密钥系统为Client/Server提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被......
  • CUDA 的随机数算法 API
    参考自NvidiacuRand官方API文档一、具体使用场景如下是是在dropout优化中手写的uniform_random的Kernel:#include<cuda_runtime.h>#include<curand_kernel.h>__device__inlinefloatcinn_nvgpu_uniform_random_fp32(intseed){curandStatePhilox4_32_10_t......