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. java实现每个单词首字母大写

    /** * 每个单词第一个字母大写 * @param str * @return */ public static String toUpperFirstCode(String str) { Stri ...

  2. Movavi Video Editor 15 Plus(视频编辑软件) 中文版

    Movavi Video Editor 15 Plus Mac版是Movavi系列中的一款视频编辑器,Movavi Video Editor Plus 15破解版提供了全面的视频功能,另外还支持为视频 ...

  3. 【Linux】Mac Centos install VMware Tools

    can't use yum: vi /etc/sysconfig/network-scripts/ifcfg-enp4s0 yum -y install lshw pciutils gdisk sys ...

  4. 【Vagrant】-NO.130.Vagrant.1 -【Vagrant】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  5. IR2104s半桥驱动使用经验

    多次使用IR2104s,每次的调试都有种让人吐血的冲动.现在将使用过程遇到的错误给大家分享一下,方便大家找到思路. 一.自举电容部分(关键) 1.听说自举电路必须要安装场效应管,于是我在使用过程中,安 ...

  6. linux----------VMware如何链接局域网其它电脑上的虚拟机,选择桥接模式即可。仔细阅读虚拟机的三个连接方式

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.   ...

  7. PHP、mySQL及Navicat安装·Mac

    PHP配置 Mac系统对开发人员非常友好,除了自带Apache外,还带有能与Apache相匹配的服务器端脚本语言PHP,因此,Mac中PHP的启动只需要在Apache服务中进行一下超级简单的配置即可直 ...

  8. H.264学习--1

    1.宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为                               ...

  9. 开发宏功能:excel中从sheet批量插入

    源数据如图: 宏操作: 生成数据后: 关键操作:在excel中启用开发工具,添加宏,然后添加模块即可,编辑完代码后,自定义功能按钮即可. Sub MakeDataSource() Dim isExis ...

  10. Linux基础命令---dmeg显示内核输出

    dmesg dmesg指令用来打印和控制内核的输出信息,这些信息保存早ring buffer中. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.SUSE.open ...