4 js中的new 做了什么
时间:2019-09-27
本文章向大家介绍4 js中的new 做了什么,主要包括4 js中的new 做了什么使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> //任意函数都可以使用new关键字进行调用 通过new使得普通的函数变成了构造函数 //一般情况下构造函数的首字母需要大写 //new关键字做了四件事。 //1-开辟了一块内存空间 创建了一个新对象 //2-让this指向这个空对象 //3-调用构造函数 给对象添加属性和方法 //4-返回这个新对象 //知识点: 在js中构造函数可以有返回值也可以没有 // ========================================================================================= // function A(){ // console.log("A"); //A // return "aaa"; // } // var obj1 = new A(); // console.log(obj1); //A{} //如果返回值是基本数据类型 js会自动忽略这个返回值,也就是跟没有写返回值一样 最终返回的还是新创建的实例对象 // ======================================================================================== // function B(){ // console.log("B"); //B // return {b:"bbb"};//字面量创建对象 ===(等同于)new Object({b:"bbb"}) // } // var obj2 = new B(); // console.log(obj2); //{b:"bbb"} //如果返回值是引用数据类型 则实际返回的就是这个引用数据类型(复杂数据类型),此时函数返回值即return,只跟当前写的数据类型有关,跟新创建的实例对象没有任何关系! // ======================================================================================= //常规用法 // function C(){ // console.log("C"); //C // } // var obj3 = new C(); // console.log(obj3); //C{} //如果没写return,这个构造函数也有返回值,返回当前创建的新对象,因为new做了这件事 // ======================================================================================= // function D(){ // console.log("D"); //D // return this; // } // var obj4 = new D(); // console.log(obj4); //D{} //如果函数的返回值是this 那么就跟没有写返回值结果是一样的,因为new是this指向当前创建的新对象,即实例 function obj(x){ console.log("E"); //E this.x = x; } var obj1 = new obj(10);//new做的事情是让当前普通函数转化成构造函数,使this指向当前实例 console.log(obj1); var obj2 = obj(10);//相当于函数调用,this指向window。window上有键值X :10; console.log(window); </script> </body> </html>
原文地址:https://www.cnblogs.com/Hale-wang/p/11597916.html
- 计算机程序的思维逻辑 (2) - 赋值
- web worker 扫盲篇
- 怎样用Python实现地理编码
- httpd配置ResponseHeader
- 针对iPhone的pt、Android的dp、HTML的css像素与dpr、设计尺寸和物理像素的浅分析
- babel入门基础
- 如何构建爬虫代理服务?
- (19) 接口的本质 / 计算机程序的思维逻辑
- (18) 为什么说继承是把双刃剑 / 计算机程序的思维逻辑
- 有效的python属性管理:描述符的使用
- (17) 继承实现的基本原理 / 计算机程序的思维逻辑
- (16) 继承的细节
- Python时间处理完全手册
- 计算机程序的思维逻辑 (15) - 初识继承和多态
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第三十一课--递归(3.递归的弊端)
- python第三十二课——栈
- linux系统运维企业常见面试题集合(三)
- python第三十二课——队列
- python第三十四课——1.匿名函数的定义和使用
- python第三十四课——2.匿名函数配合容器函数的使用
- 专家专栏|使用agent2自定义插件采集通过MQTT协议发送的数据
- Linux系统双网卡绑定配置教程
- python第三十五课——生成器
- python第三十六课——1.可迭代对象
- Linux系统Shell编程——脚本编写思路与过程
- python第三十六课——2.迭代器对象
- python第三十七课——模块
- Linux系统MySQL数据库主从同步实战过程
- 最火的java8新特性:Lambda 表达式