This

解析器再调用函数每次都会向函数内部传递一个隐含的参数this,this指向的是一个对象(函数执行的上下文对象)

1、以函数形式调用时,this永远是window。

2、以方法形式调用时,this就是调用方法的那个对象

3、当以构造函数的形式调用时,this就是新创建的那个对象

使用工厂的方法创建对象

通过该方法可以大批量的创建对象,这样创建的对象使用的构造函数都是Object,无法区分多种不同类型的对象。

function create(name,age,geder){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.gender =gender;
obj.sayName = function(){
alert(this.name);
};
return obj;
}
var obj1 = create(“xx”,xx,“x”);
var obj2 = create(“xx”,xx,“x”);
var obj3 = create(“xx”,xx,“x”);
console.log(obj1);
console.log(obj2);
console.log(obj3);

构造函数

一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯首字母大写

构造函数和普通函数的区别就是调用方式不同,普通函数直接调用,构造函数需要用new关键字

执行流程:

1、 立刻创建一个新的对象

2、将新建对象设置为this,在构造函数中可以使用this来引用新建的对象

3、逐行执行函数中代码

4、将新建的对象作为返回值返回

function person(name,age,geder){
this.name = name;
this.age = age;
this.gender =gender;
this.sayName = function(){
alert(this.name);
}; }
var per = new person(“xx”,xx,“x”);
var per2 = new person(“xx”,xx,“x”);
var per2 = new person(“xx”,xx,“x”);
console.log(per);
console.log(per2);
console.log(per3);

使用instanceof可以检查一个对象是否是一个类的实例

语法:对象 instanceof 构造函数

如果是则返回true,否则返回false

为节省空间,将sayname方法在全局作用域中定以,

 但会污染全局作用域的命名空间,不安全

原型(prototype)

每创建一个函数,解析器都会向函数中添加一个属性,这个属性对应一个对象就是原型对象

 作为普通函数调用prototype没有任何作用

 以构造函数调用时,创建的对象都会有一个隐含的属性,

    指向该构造函数的原型对象,可以通过_ _proto_ _来访问该属性

原型对象相当于一个公共的区域,所有对象都可以访问到原型的属性可以将对象中共有的内容,统一设置到原型对象中

function MyClass(){
}
//向MyClass的原型中添加属性a
MyClass.prototype.a = 123;
//向MyClass的原型中添加一个方法
MyClass.prototype.sayHello = function(){
alert("Hello");
};

检查对象自身中是否含有某个属性用对象的hasOwnProperty()

JS构造函数、原型对象、隐含参数this的更多相关文章

  1. JS构造函数、对象工厂、原型模式

    1.对象创建的3中方法 1.1.对象字面量 var obj = { name: "mingzi", work: function () { console.log("wo ...

  2. js构造函数+原型

    注:普通对象与函数对象 var o1 = {}; var o2 =new Object(); var o3 = new f1(); function f1(){}; var f2 = function ...

  3. js重写原型对象

    首先看两段很相似的代码: 1. function Person(){} Person.prototype = { constructor:Person, name:"Nic", a ...

  4. JS之原型对象

    1.__proto__ 每个对象都有一个__proto__属性,指向该对象的原型对象 <script> var person = function(name,city){ this.nam ...

  5. 分析 js构造函数:对象方法 、类方法 、原型方法

    构造函数方法有对象方法.类方法.原型方法,这些方法在什么时候可以调用,什么时候不能调用,为什么? function Func(name){ this.name=name; this.ff=functi ...

  6. 笔记: js构造函数与原型

    目录 构造函数与原型介绍 涉及三种引用的操作 有关原型及原型链的一些相关方法总结 @ 构造函数与原型介绍 1.函数与函数的原型对象(prototype object): 在JavaScript中,创建 ...

  7. JS核心系列:原型对象

    在JS中,每当创建一个函数对象f1 时,该对象中都会内置一些属性,其中包括prototype和proto, prototype即原型对象. 每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象 ...

  8. [转]JavaScript构造函数及原型对象

    JavaScript中没有类的概念,所以其在对象创建方面与面向对象语言有所不同. JS中对象可以定义为”无序属性的集合”.其属性可以包含基本值,对象以及函数.对象实质上就是一组没有特定顺序的值,对象中 ...

  9. 还在问什么是JavaScript构造函数、实例、原型对象以及原型链?看完这篇你就懂

    1概述 ES6, 全称 ECMAScript 6.0 ,2015.06 发版.在ES6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它们的特征. 2构造函数 构造函数是一种特 ...

  10. [js高手之路]使用原型对象(prototype)需要注意的地方

    我们先来一个简单的构造函数+原型对象的小程序 function CreateObj( uName, uAge ) { this.userName = uName; this.userAge = uAg ...

随机推荐

  1. centos7 + php7

    安装php7 https://www.zntec.cn/archives/centos7-lamp.html composer安装tp curl -sS https://getcomposer.org ...

  2. (4.10)mysql备份还原——利用binlog+全备恢复误删表【不推荐使用】

    关键误操作:mysql误删除 1.备份+binlog恢复数据 [1.1]场景:不小心误删除某张表 [1.2]解决方法:在另外一台机器,恢复全库+日志,然后导出删除的表,再插入会生产库. [1.3]案例 ...

  3. 【java.sql.SQLException: Before start of result set】

    将ResultSet转换为 Map<String,String>时抛出了一个这样的异常:java.sql.SQLException: Before start of result set ...

  4. JS生成当前月份包括最近12个月内的月份

    var last_year_month = function() { var result = []; for(var i = 0; i < 12; i++) { var d = new Dat ...

  5. DAX/PowerBI系列 - 关于时间系列 - 时间相关数值比较 - 用非自带函数

    DAX/PowerBI系列 - 关于时间系列 - 时间相关数值比较 - 用非自带函数 文末有彩蛋,解决蛋疼问题 难度: ★★☆☆☆(2星) 适用范围: ★★★☆☆(3星) 概况: 基于时间的汇总可能是 ...

  6. mysql5安装

    一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Comp ...

  7. 资讯类产品-创业邦APP产品原型模板公开分享

    众所周知,知识付费和资讯是近年来两个受关注度极高的互联网产品方向.18年喜马拉雅“123狂欢节”,3天时间内容消费额4.35亿,足见知识付费内容市场的火爆.字节跳动凭借今日头条APP起家,逐渐跻身互联 ...

  8. OO第二单元电梯线程系列总结作业

    电梯系列第一次作业 功能描述: 傻瓜电梯无需考虑超载捎带 线程模式: Producer-Consumer Pattern 思路: 第一次作业是一个傻瓜电梯,分别有一个生产者生成电梯指令(也就是Inpu ...

  9. python爬虫中scrapy框架是否安装成功及简单创建

    判断框架是否安装成功,在新建的爬虫文件夹下打开盘符中框输入cmd,在命令中输入scrapy,若显示如下图所示,则说明成功安装爬虫框架: 查看当前版本:在刚刚打开的命令框内输入scrapy versio ...

  10. 使用StringEscapeUtils转义、反转义字符串

    使用commmons-lang.jar中的字符串转义工具类org.apache.commons.lang.StringEscapeUtils转义.反转义字符串,支持CSV.HTML.JAVA.Java ...