创建实例

funtion Fn (){
    var num = 10;    
    this.x = 100;
    this.getX = function(){
        console.log(this.num); 

    }
}
var f1 = new Fn;
f1.getX();
最后执行的结果是:undefined
说明: 类有普通的里面,当函数执行的时候,var num只是当的形成的私有作用域中的私有变量而已,它和我们的f1这个实例没有任何的关系,只有this.xxx=xx才相当于给f1增加私有的属性和方法,才和我们的f1有关系;

funtion Fn (){
    var num = 10;    
    this.x = 100;
    this.getX = function(){
        console.log(this.num); 
    }
    return false;
    return {"name","123"};
}
var f1 = new Fn;
console.log(f1);
说明:在构造函数欧式中,浏览器会默认的把我们的实例返回(返回的是一个数据类型的值);如果我们手动写了return返回:
    返回的是一个基本数据类型就那个的值,房钱实例是不变的,例如:return 100;我们的f1还是当前Fn的实例
    返回的是一个引用数据类型的值,当前的实例会被自己的返回值给替换掉,例如返回:return {"name","123"};我们的f1就不再是Fn的实例了,而是对象{“name”,"123"};

funtion Fn (){
    var x= 10;    
    this.getX = function(){
        console.log(this.x); 
    }
}
var f1 = new Fn;
说明:检测某个实例是否属于这个类---》instanceof
console.log(f1.instanceof Fn);//-->true
这方法可以检测数据类型:
f1 instanceof Array -> false;
f1 instanceof Object  -> true
这个检测数据类型的方法可以和typeof比较
funtion Fn (){
    var x= 10;    
    this.getX = function(){
        console.log(this.x); 
    }
}
var f1 = new Fn;
var f2 = new Fn;
说明 : f1和f2都是Fn这个类的一个实例,都拥有x和getX两个属性,但是这个属性是各自的私有属性,所以console.log(f1.getX ==== f2.getX);//--> false

in 检测某一个属性是否属于这个对象(attr in object),不管是私有的属性还是公用的属性,只要存在,用in检测都是true

//hasOwnProperty:用来检测某一个属性是否是这个对象的“私有属性”,这个方法只能检测私有属性
console.log(f1.hasOwnProperty("getX"));-->true  "getX"是f1的私有属性

//检测某一个属性是否是这个对象的“公有属性”

function hasPubProperty(obj,attr){
    return (attr in obj) && !obj.hasOwnProperty(attr);
//属性是对象的属性,但又不是私有的属性,必定是公有属性;
}

JS学习笔记-构造函数篇的更多相关文章

  1. js学习笔记第二篇

    Js笔记整理 1.StringAPI a)        大小写转换:str.toUpperCase();str.toLowerCase(); b)        获取指定位置字符: Str[i]-- ...

  2. Vue.js学习笔记 第一篇 数据绑定

    双花括号文本插值 先来个最简单的例子,看完之后立马会用Vue了,是不是很有成就感 <!DOCTYPE html> <html> <head> <meta ch ...

  3. Vue.js学习笔记 第二篇 样式绑定

    Class绑定的对象语法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  4. 【转】Backbone.js学习笔记(二)细说MVC

    文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...

  5. 《JavaScript高级程序设计》学习笔记12篇

    写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...

  6. PHP学习笔记 - 进阶篇(4)

    PHP学习笔记 - 进阶篇(4) 字符串操作 字符串介绍 PHP开发中,我们遇到最多的可能就是字符串. 字符串变量用于包含字符串的值. 一个字符串 通过下面的3种方法来定义: 1.单引号 2.双引号 ...

  7. PHP学习笔记 - 进阶篇(3)

    PHP学习笔记 - 进阶篇(3) 类与面向对象 1.类和对象 类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥有名字.轮胎.速度.重量 ...

  8. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  9. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

随机推荐

  1. 源码分析String

    hashCode 计算每个char值,并移位累加 计算后的hash值会缓存

  2. docker jvm 占用高的问题定位

    定位流程 先使用一些轻便的工具查看总体情况, 如果情况糟糕, 再使用重量级的工具 jstack       查看线程数是否过多 jstat -gc -gcutil 查看gc次数和时间是否过多, 各个分 ...

  3. 04.Spring Ioc 容器 - 刷新

    基本概念 Spring Ioc 容器被创建之后,接下来就是它的初始化过程了.该过程包含了配置.刷新两个步骤 . 刷新由 Spring 容器自己实现,具体发生在 ConfigurableApplicat ...

  4. Options Menu的android3.0以上和以下版本显示刷新原理,刷新适配

    一 显示区别: 2.3.x及以下版本,需要按菜单键显示菜单,当菜单打开时,第一个可见的部分是图标菜单,最多可容纳6个菜单项.如果你的菜单包括Android的地方超过6项,第六项,其余将被归到”More ...

  5. linux下拼接字符串的代码

    DATA_DIR=/home/liupan/.navinsight/gm result="" for i in $(ls -a $DATA_DIR) do if [ $i != & ...

  6. 模拟虚拟的文件系统initrd/initramfs

    请看initramfs文件的以下解析: [root@ant-colonies boot]# ls config--.el6.x86_64 lost+found efi symvers--.el6.x8 ...

  7. ZK请求处理

    1. 事务请求转发-事务必须由Leader处理 所有非Leader的服务器收到来自客户端的事务请求,都会将客户端请求已REQUEST形式转发给Leader服务器进行处理 2. 事务处理 Proposa ...

  8. 每天学一点ubuntu指令

    2017-03-06apt-get | dpkg -i | apt-cache | add-apt-repository ppa源 | dpkg -S一.apt 给Ubuntu安装软件的一种命令方式a ...

  9. Entity framework 7通过代码添加外键关系的方法

    这几天研究Asp.net5,也试着写了一些示例代码,因为网上的资料实在是太少了,所以在此把一些问题的解决方法记录下来,以备后查. 问题: 在EF7中,假如数据库已经存在,并且两个表具有外键关系,但是实 ...

  10. Redis Windows环境搭建

    简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制 ...