js 对象和构造函数

一、对象的创建方法

题外话:

  1. java c++ 同样能生产出对象,但是是死的

  2. JavaScript 生产出的对象是活的,更像是人的生长过程,后天可以增加和删除方法

用字面量创建

var obj = {};

二、对象的增删改

let obj = {};obj.name = '张三';
obj.age = 18;
delete obj.age;

一旦经历了 var 的操作,所得出的属性,window ,这种的属性叫做不可配置的属性。不可配置的属性 delete 不掉

var a = 'abc';
a.name = 'mary';
console.log(a.name); // undefined
obj.name = '李四';

二、构造函数

  1. 系统自带的构造函数 new Object()

Object 就像一个对象工厂一样,执行一次生成一个对象,

并且每一次生成的对象都是一模一样且独一无二的

  1. 自定义的

  2. Object.create(prototype)

var obj = new Object(); --> var obj = {};
// 可以灵活地往里面添加东西
obj.name = '张三';
obj.age = 18;
obj.sex = 'male';// 删除东西
delete obj.sex;
// 构造函数
function Person() {}// 必须加 new 操作符,构造函数必须遵循大驼峰式命名规则(首字母大写)-- TheFirstName
// 小驼峰式 -- theFirstName
var person = new Person();

用字面量创建对象和用构造函数创建对象的结果是一样的

var obj = {};
var obj1 = new Object();
// 在控制台打开里面的东西都是一样的 ⇒ 因为要经过包装类

三、构造函数的内部原理

构造函数三部曲

  1. 在函数体最前面隐式加上 this = {}
  2. 执行 this.xxx = xxx
  3. 隐式的返回 this 对象

有了 new 关键字之后,就能让普通函数拥有构造函数的功能

function Student(name, age, sex) {// 1. 在函数体的最前面隐式添加一个 this 对象// var this = {//     name : '',//     age : '',//     sex : ''// }// 2. 执行 this.xxx = xxxthis.name = name;this.age = age;this.sex = sex;// 3. 隐式返回 this 对象// return this;
}var student = new Student('张三', 18, 'male'); // 用一个变量接收一下

模拟构造函数

function Person(name, height) {var that = {};that.name = name;that.height = height;return that;
}// 只要加了 new 关键字,就会让上面的函数的返回值强制变成一个对象
var person = Person('张三', 180);
  • 对象实例化:new 一个对象
  • 对象实例化只有得到的每一个对象叫实例 – 对象 person 是 构造函数 Person 的一个实例

检测某个实例是不是某个构造函数所构造出来的 ⇒ 构造函数.prototype.isPrototypeOf(实例)

Person.prototype.isPrototypeOf(person); // true

返回某个实例的原型 ⇒ Object.getPrototypeOf(实例)

Object.getPrototypeOf(person); // 返回 person 的原型对象 --- {construcotr:...}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java接入支付宝支付教程

Java接入支付宝支付教程 一、创建应用 1.登录支付宝开放平台 支付宝开放平台网址:https://open.alipay.com/platform/developerIndex.htm 2.创建一个应用 ? 图1 二 、设置应用密钥 1.下载安装支付宝开放平台助手 软件下载地址:https://gw.alipay…

虚拟同步发电机_测量虚拟同步发电机惯量与阻尼系数的新方法

华北电力大学分布式储能与微网河北省重点实验室的研究人员颜湘武、王俣珂、贾焦心、王德胜、张波,在2019年第7期《电工技术学报》上撰文(论文标题为“基于非线性最小二乘曲线拟合的虚拟同步发电机惯量与阻尼系数测量方法”)指出,虚拟同步发电机(VSG)技术…

对象的包装类

一、首先抛出疑问: 原始值为啥添加属性而且不会报错 ??? var str a; str.name abc; console.log(str.name); // 就是因为原始值要经过包装类 var str abc; str.length 2; // new String(abc).length 2; delete console.lo…

expdp导出 schema_Oracle使用数据泵在异机之间导出导入多个 schema

需求:A机中的oracle有pingchuan和zte两个用户(schema),这两个schema中都有数据。B机刚装完oracle数据库并建好实例,没有数据。A机的IP为192.168.1.131,B机的IP为192.168.1.137。要求把A机中的pingchuan和zte导入到B机中。(1)A机导…

SpringBoot整合阿里云OSS上传文件

一、需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写的是…

js 原型以及原型链

原型编程的基本规则: 所有的数据都是对象要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它对象会记住它的原型如果对象无法相应某个请求,它会把这个请求委托给它自己的原型 直接上图 一、继续说说构造函数 …

python tfidf特征变换_使用sklearn提取文本的tfidf特征

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, TfidfTransformercorpus [This is the first document.,This is the second second document.,And the third one.,Is this the first document?,]CountVectorizer是通过fit_transform函数将…

SpringBoot整合阿里云OSS文件上传、下载、查看、删除

SpringBoot整合阿里云OSS文件上传、下载、查看、删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples (其中包含SpringBoot和其他常用技术的整合,配套源码以及笔记。基于最新的 SpringBoot2.1,欢迎各…

js 继承发展史

一、传统模式 – 利用原型链 Grand.prototype.lastName 王五; function Grand() {} var grand new Grand();Father.prototype grand; function Father() {this.name 李四 } var father new Father();Son.prototype father; function Son() {} var son new Son(); conso…

vue 调用webservice_js跨域调用WebService的简单实例

步骤1. 在web.config中的system.web节点里加入步骤2.webservice代码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Mvc;namespace WebService{/// /// WebService1 的摘要说明/// [WebServic…

SpringBoot整合oss实现文件的上传,查看,删除,下载

springboot整合oss实现文件的上传,查看,删除,下载 1.什么是对象存储 OSS? 答:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低…

属性的表示方法和对象的枚举

对象 一、对象.属性 var obj {name : mary,age : 18 };console.log(obj.name, obj.age); // mary 18二、对象[‘属性’] – 让对象属性更加灵活 var zhang {wife1: {name: xiaomei},wife2: {name: xiaoli},wife3: {name: xiaowang},wife4: {name: xiaoxiao},sayWife: funct…

docker 启动成功但无法访问_docker nginx 运行后无法访问的问题解决

## 1最近在学docker部署,一开始打算将nginx先docker化的。对照官方的docker镜像介绍说明,进行自定义配置将官方的nginx.conf复制出来后,修改添加了一些自定义,主要是屏蔽了default.conf,以及include文件夹 sites-avail…

minio实现文件上传下载和删除功能

前言 之前用到文件上传功能,在这里做个学习记录。使用minio实现,后面会记录使用fastdfs和阿里云的oss实现文件上传以及他们的比较(oss根据流量收费)。minio的中文文档:https://docs.min.io/cn/ minio安装 首先查询d…

ES6 let 和 const 关键字

一、ES5 的 var 关键字 var 存在变量提升var 允许重复声明,浏览器本身只识别一次,但不会报错var 声明的变量即是全局变量,也相当于给 GO(window) 设置了一个属性而且两者建立映射机制基于 typeof 检测一个没有被声明过的变量,并不…

Spring Boot配置MinIO(实现文件上传、下载、删除)

1 MinIO MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小&#xff…

js 里面令人头疼的 this

JS中this相关问题梳理 this 就是 js 里的关键字,有特殊意义,代表函数执行主体 一、定义 函数执行主体(不是作用域):意思是谁把函数执行了,那么执行主体就是谁 二、使用情况 全局作用域里的this 是window…

大数据专业考研书_考研必知大数据(完整版)

由上面的两组图表,不难看出,历史和医学的读研比例遥遥领先。另外由图可知,全国有百分之十三的本科生选择了毕业后读研,而这其中有近三成的人是选择了在读研时转换专业。部分省份报名人数汇总结合历年报考人数统计数据来看&#xf…

Java8 stream().map()将对象转换为其他对象

Java8 stream().map()将对象转换为其他对象 1: 将对象List转为List public class user{private String name;private String password;private String address;private String age;}List<String> name user.stream().map(x -> x.getName()).collect(Collectors.toLi…

改变 this 指向的 call 和 apply

一、call 方法 基本用法 function test() {console.log(hello world); } test(); // hello world test.call(); // hello world // test() > test.call()其实就是借用别人的方法&#xff0c;来实现自己的功能 function Person(name, age) {// this objthis.name name;th…