JS:构造函数
定义:在JavaScript中,用new关键字来调用的函数,称为构造函数,构造函数首字母一般大写。
理解:
构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。
创建对象,并调用函数,new fn,无参;
创建对象,并调用函数,new fn(),带参;
在构造函数中显示调用return,如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。
看例子!
function Person(name, age) {
this.name = name;
this.age = age;
}
var p1 = new Person('lili',10);
console.log(p1);
打印结果:
Person {name: 'lili', age: 10}
创建带参无参对象及调用函数:
function fn(a) {
this.a = a;
this.b = 20;
return "hello";
}
var re = new fn; //构造函数
console.log(re);
var re2 = new fn(200); //构造函数
console.log(re2);
var re3 = fn(90); //普通函数调用
console.log(re3);
打印结果:
fn {a: undefined, b: 20}
fn {a: 200, b: 20}
hello
理解:
首先定义变量提升;re是创建了一个新对象,并调用了不带参数的函数fn;re2也是创建了一个新对象,并传入参数,隐式操作是var a = 200,并调用函数;re3是函数调用,并传入参数 a = 90。
例:
function fn() {
this.name = "karen";
return function fm() {
console.log("fm运行了");
this.name = "jack";
}
}
var f1=new fn();
console.log(f1);
console.log(f1.name); //"fm"
理解:f1的结果看fn函数的返回值是不是引用数据,如果是,则返回哪个引用数据,此时是一个fm函数,如果不是一个对象,那么
就返回新创建的对象。
例:
function fn() {
this.name = "marry";
var obj = {
name: "karen",
fm: function () {
this.name = "jack"
}
}
return obj;
}
var f1 = new fn();
console.log(f1.name); //karen
var f2 = new((new fn()).fm)();
console.log(f2.name); //jack
var f3 = new fn();
var f4 = new(f3.fm)();
console.log(f3.name, f4.name); //karen,jack
理解:
f2:首先new fn()创建一个对象,再调用,返回一个obj对象,再引用成员fm,并创建一个新的对象,再调用name,因此打印jack。
f3和f4是f2拆分的结果,应该能理解。
JS:构造函数的更多相关文章
- JS构造函数的用法和JS原型
$(function(){ var rec = new Rectangle(5, 10); //alert(rec.width + "*" + rec.height + " ...
- 谈谈JS构造函数
//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(msg) ...
- Class和普通js构造函数的区别
Class 在语法上更加贴合面向对象的写法 Class 实现继承更加易读.易理解 更易于写 java 等后端语言的使用 本质还是语法糖,使用 prototype Class语法 typeof Math ...
- js 构造函数 & 静态方法 & 原型 & 实例方法
js 构造函数 & 静态方法 & 原型 & 实例方法 ES5 "use strict"; /** * * @author xgqfrms * @licens ...
- 深入研究js构造函数和原型
很快就要从新浪离职了,最近心情比较轻松,抽点空整理一下构造函数和原型的机理. 我们都知道,在经典设计模式中我们最常用的就是工厂模式.构造函数模式.原型模式这几种,听起来‘模式’好像很高大上的样子,实际 ...
- js构造函数,索引数组和属性的属性
本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点 <script> function p(){ var len=argume ...
- JS构造函数原理与原型
1.创建对象有以下几种方式: ①.var obj = {}; ②.var obj = new Object(); ③.自定义构造函数,然后使用构造函数创建对象 [构造函数和普通函数的区别:函数名遵循大 ...
- js 构造函数(construction)与原型(prototype)
1.面向对象:js原型 java有class和instance,js仅仅有构造函数(function Cat(name,age){this.name=name;this.age=age}),为了实现数 ...
- JS构造函数、对象工厂、原型模式
1.对象创建的3中方法 1.1.对象字面量 var obj = { name: "mingzi", work: function () { console.log("wo ...
- 完整原型链详细图解之JS构造函数、原型 原型链、实例化对象
一.首先说一下什么是构造函数: 构造函数:用来在创建对象时初始化对象.特点:构造函数名一般为大写字母开头:与new运算符一起使用来实例化对象. 举例: function Person(){} //Pe ...
随机推荐
- 一文搞懂MySQL事务的隔离性如何实现|MVCC
关注公众号[程序员白泽],带你走进一个不一样的程序员/学生党 前言 MySQL有ACID四大特性,本文着重讲解MySQL不同事务之间的隔离性的概念,以及MySQL如何实现隔离性.下面先罗列一下MySQ ...
- JavaScript学习总结9
今天学习了表单提交,JQuery部分知识
- el-tree小知识点
<el-tree ref="tree" :props="props" :data="initData" node-key=" ...
- Hoo Smart Chain 万物生长计划火热报名中,可视化公链迸发勃勃生机
在DeFi越来越趋向同质化和静态化时,Hoo Smart Chain决定充当破局者,宣布决定All In元宇宙,并于2022年3月份开启面向全球去中心化开发者的奖励计划--「万物生长计划」 目前Ter ...
- JavaScript学习②
2. 基本对象: 1. Function:函数(方法)对象 1. 创建: 1. var fun = new Function(形式参数列表,方法体); //忘掉吧 2. function 方法名称(形 ...
- MySQL Router重装后重新连接集群进行引导出现的——此主机中之前已配置过的问题
问题出现的前因: 因为重新安装了MySQL Router,然后打算重新连接上目标集群进行MySQL Router的初始化引导,结果报错了! [root@linux666 system]# mysqlr ...
- nginx反向代理隐藏端口号和项目名
可利用nginx反向代理隐藏端口号和项目名,直接输入ip即可访问对应的tomcat项目,配置nginx安装目录的nginx/conf/nginx.conf文件,修改如下:(开了两个web项目:项目名为 ...
- spring-data-jpa操作数据库
1.spring-data-jpa是spring对hibernate的整合 2.spring boot工程在实体类添加注解.添加两个依赖.写配置文件,可以自动生成数据库表 实体类: @Entity / ...
- Bugku练习题---MISC---蜜雪冰城~
Bugku练习题---MISC---蜜雪冰城~ flag:flag{1251_521_m1xueb1n9chen9ti@nm1mi} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现有好几个文件 ...
- 华硕主板安装Ubuntu双系统无法启动解决办法
问题描述: 在安装完Ubuntu后,开机后没有启动项可以选择,而是直接进入win10系统. 解决办法: 开机进入bios,选择 高级模式 (Advance model),进入 启动(boot)选项卡, ...