//理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty、
//1、typeof方法 获取变量的类型,返回:number, string, undefined, object, boolean, function
console.log("typeof方法");
var st = "abcd"; console.log(typeof st);//string 也可以用typeof(st); //2、instanceof方法 判断变量是否是某个对象的实例,返回:true或false
console.log("instanceof方法");
var arr = [1, 2];
function Person() { }
var person1 = new Person(); console.log(arr instanceof Array);//true
console.log(st instanceof Array);//false
console.log(person1 instanceof Person);//true //3、constructor属性 指向创建实例构造函数
//对象原型中也有一个constructor属性,也是指向构造函数
console.log("constructor属性");
function Person2() { }
var person2 = new Person2(); console.log(person2.constructor);//返回的是Person2 console.log(person2.constructor == Person2)
console.log(Person2.prototype.constructor);//返回的是Person2 console.log(person2.constructor == Person2) //4、prototype属性 指向函数的原型,存在于构造函数与构造函数原型之间
//5、__proto__ 指向实例的构造函数的原型对象,存在于实例与构造函数的原型对象之间(这个属性是不可见的,不过在FF, chrome, safari等浏览器中可以通过脚本访问)
console.log("__proto__属性");
function Person3() { }
var person3 = new Person3();
var person4 = new Person3(); console.log(person3.__proto__ == Person3.prototype);//true
console.log(person4.__proto__ == Person3.prototype);//true //6、isPrototypeOf方法:用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false
//7、hasOwnProperty方法:用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
console.log("isPrototypeOf方法、hasOwnProperty方法")
function siteAdmin(nickName,siteName){
this.nickName=nickName;
this.siteName=siteName;
}
siteAdmin.prototype.showAdmin = function() {
alert(this.nickName+"是"+this.siteName+"的站长!")
};
siteAdmin.prototype.showSite = function(siteUrl) {
this.siteUrl=siteUrl;
return this.siteName+"的地址是"+this.siteUrl;
};
var matou=new siteAdmin("愚人码头","WEB前端开发");
var matou2=new siteAdmin("愚人码头","WEB前端开发");
matou.age="30";
// matou.showAdmin();
// alert(matou.showSite("http://www.css88.com/"));
console.log(matou.hasOwnProperty("nickName"));//true
console.log(matou.hasOwnProperty("age"));//true
console.log(matou.hasOwnProperty("showAdmin"));//false
console.log(matou.hasOwnProperty("siteUrl"));//false
console.log(siteAdmin.prototype.hasOwnProperty("showAdmin"));//true
console.log(siteAdmin.prototype.hasOwnProperty("siteUrl"));//false
console.log(siteAdmin.prototype.isPrototypeOf(matou))//true
console.log(siteAdmin.prototype.isPrototypeOf(matou2))//true

面向对象的程序设计(二)理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty的更多相关文章

  1. js的面向对象的程序设计之理解继承

    来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(六) 先来解析下标题——对象和继承~ 一.对象篇 ECMA-262把对象的定义为:&qu ...

  2. JS面向对象的程序设计之理解对象

    一.对象定义 (1)ECMAScript中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同: (2)ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数” 二. ...

  3. js面向对象的程序设计 --- 上篇(理解对象)

    前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...

  4. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

  5. JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

  6. Python 面向对象基础(类、实例、方法、属性封装)

    python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...

  7. DOM学习笔记(二)对象方法与属性

    所有 HTML 元素被定义为对象,而编程接口(对象的访问)则是对象方法和对象属性. 事实上,常用的只用window对象及其子对象document对象,以及事件Event对象. Window 对象 Wi ...

  8. python_way,day8 面向对象【多态、成员--字段 方法 属性、成员修饰符、特殊成员、异常处理、设计模式之单例模式、模块:isinstance、issubclass】

    python_way day8 一.面向对象三大特性: 多态 二.面向对象中的成员 字段.方法属性 三.成员修饰符 四.特殊成员 __init__.__doc__.__call__.__setitem ...

  9. Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

    一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在pytho ...

随机推荐

  1. service name和SID的区别

    数据库名(DB_NAME).实例名(Instance_name).以及操作系统环境变量(ORACLE_SID)  在ORACLE7.8数据库中只有数据库名(db_name)和数据库实例名(instan ...

  2. 【转】 Homebrew – OSX下简单的包管理系统

    很多linux用户很喜欢 (Debian/Ubuntu)系列的apt包管理系统和(Redhat/Fedora)系列的yum包管理系统. 包括Windows用户都有多种方便的软件管理工具,如:360软件 ...

  3. linq里面似in的查询

    1.linq里面似in的查询 List<string> source = new List<string>{ "aaa", "bbb" ...

  4. HDU 4565 So Easy!

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. 无状态、REST、RESTful 和 Web Services【整理】

    在理解 OpenStack 的过程中,常常遇到 REST 这个概念,现从各处搜罗如下: 对 Web Service 的理解: Web 服务有点像对计算机友好的网页,基于让程序可以跨网络交换信息的标准和 ...

  6. 【原】Storm调度器

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Pluggable scheduler(可插拔调度器) Isolation schedu ...

  7. JDK1.5新特性(五)……Typesafe Enums

    援引 Typesafe Enums - This flexible object-oriented enumerated type facility allows you to create enum ...

  8. Android 依赖注入 ButterKnife 基本使用

    ButterKnife 是一个快速 Android View 注入框架,开发者是Jake Wharton,简单的来说,ButterKnife 是用注解的方式替代findViewById和setXXXL ...

  9. Unity3D入门之JavaScript动态创建对象

    接着上一篇Unity3D入门文章,这里继续使用JavaScript脚本语言. 调试:Unity集成了MonoDevelop编辑器,在代码某行的左侧点击,即可下一个断点.然后先关闭Unity编辑器,在M ...

  10. [Objective-c 基础 - 2.1] 封装

    A.封装内部细节,根据需求暴露方法 #import <Foundation/Foundation.h> @interface Student : NSObject { int age; } ...