<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>测试文档</title> 
    <script type="text/javascript">

// 实质上属性和方法是一样的,方法是属性为引用型的函数。 
//一个对象有4种属性: 
//                 1,构造函数通过this关键字定义的属性 
//                 2,构造函数通过var关键字定义的属性 
//                 3,构造函数的原型对象添加的属性 
//                 4,对象动态添加的属性 
//实例的公有属性:1      通过this关键字定义的属性           可访问   1,2,3,4 
//实例的私有属性:2      通过var关键字定义的属性。          可访问   2 
//实例的共享属性:3      通过实例指向的原型添加的属性。      可访问   1,3,4 
//实例的静态属性:4      对象动态添加的属性。               可访问  1,3,4

//总结: 
//     实例属性:1,公有 
//              2,私有 
//              4,静态 
//     原型属性:3,共享

//this定义的为特权属性。全部可访问 
//var定义的为私有属性。 
//动态添加的属性为公有属性。不可访问私有属性

//实例对象指向的原型属性为原型属性。不可访问私有属性,优先级低于公有属性

//实例属性主要有公有属性和特权属性构成。均可被外部和原型属性访问。主要区别在于是否可访问私有属性 
//原型属性优先级低于实例属性。可被外部访问和实例属性访问(除私有属性)

//-----------------此处为分割线----------------------------- 
// 公有属性:对象暴露给外部环境的属性。也是对象的属性。 
// 私有属性:对象内部的属性,往往不可访问.在构造函数层面上考虑才有意义。 
// 静态属性:动态添加的属性。也是对象的属性。 
// 共有属性:所有构造函数生成的实例所共享的属性。

function User(){ 
//           公有属性:每new一个User实例对象,都有的属性。 
//                    为实例属性,所有实例的属性不共享内存。 
//                    外部可访问。 
           this.name='byronvis'; 
//           特权方法:每new一个User实例对象,都有的方法。 
//                    为实例方法,所有实例的方法不共享内存。 
//                    外部可访问。 
//                    可访问公有属性。 
//                    可访问私有属性。 
           this.sayName=function(){ 
            alert(this.name); 
               alert(this.school); 
            alert(age);//变量声明会自动提前。 
            alert(this.sex); 
           }; 
//           私有属性:外部不可访问。 
//                    仅对构造函数有意义,对于new的User实例对象无意义。 
           var age=22; 
//           私有方法:外部不可访问。 
//                    仅对构造函数有意义,对于new的User实例对象无意义。 
           function sayAge(){ 
               alert(age); 
           } 
           sayAge(); 
       } 
//       共有属性: 共享内存。 
       User.prototype.school='zky'; 
//       共有方法:可访问公有属性。 
//                共享内存。 
       User.prototype.saySchool=function(){ 
           alert(this.school); 
           alert(this.name); 
           alert(this.sex); 
           alert(age); 
       }; 
        var obj=new User(); 
//       静态属性:就是动态添加的实例属性。 
        obj.sex='man'; 
//       静态方法:就是动态添加的实例方法。 
        obj.saySex=function(){ 
            alert(this.sex); 
            alert(this.name); 
            alert(this.school); 
            alert(age); 
        }; 
//-----------------此处为分割线----------------------------- 
////      证明this关键字定义的属性和动态添加的属性本质上一样的,都可认为是实例对象的公有属性。 
//       验证: this关键字定义的属性访问动态添加的属性 
//        obj.sayName();//true 
//        验证:动态添加的属性访问this关键字定义的属性 
//        obj.saySex();//true 
//        验证:公有属性访问私有属性 
//        obj.sayName();//true 
           obj.saySex();//false 
//        验证:共享属性访问私有属性 
//        obj.saySchool();//false

</script> 
</head> 
<body> 
    测试文档 
</body> 
</html>

js实例属性和原型属性的更多相关文章

  1. JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链

      前  言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...

  2. 对JavaScript中的静态属性和原型属性的理解

    首先是在访问上的区别,当访问实例对象的某个属性但它本身没有时,它就会到原型中去查找,但不会去查找静态属性. // 实例对象不会去查找静态属性 function Foo(){} Foo.a = 1; v ...

  3. js继承中,原型属性的继承探究

    最近研究了js的继承,看了幻天芒的文章http://www.cnblogs.com/humin/p/4556820.html#3947420,明白了最好是使用apply或call方法来实现继承. 已知 ...

  4. js变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级

    原文出自:http://www.cnblogs.com/xxcanghai/p/5189353.html作者:小小沧海 题目如下: function Foo() { getName = functio ...

  5. 【JavaScript】变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级

    参考资料http://caibaojian.com/toutiao/5446 1.所有变量声明(var)或者声明函数都会被提升到当前函数顶部 关于函数表达式,js会将代码拆分为两行代码分别执行.这里需 ...

  6. JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法

    1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...

  7. JS的Object类的属性、方法及如何创建对象

    属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Obje ...

  8. 面试题常考&必考之--js中的难点!!!原型链,原型(__proto__),原型对象(prototype)结合例子更易懂

    1>首先,我们先将函数对象认识清楚: 补充snow的另一种写法: var snow =function(){}; 2>其次:就是原型对象 每当我们定义一个函数对象的时候,这个对象中就会包含 ...

  9. 08 (h5*) js第9天--原型、继承

    目录: 1:原型和原型链 2:构造函数的原型可以改变 3:原型的最终指向 4:先修改原型指向,在添加方法. 5:实例对象中的属性和原型属性重合, 6:一个神奇的原型链 7:继承 8:原型链 9:利用c ...

随机推荐

  1. 快学Scala习题解答—第四章 映射和元组

    4 映射和元组  4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作  ,"gun"->18 ...

  2. ios--网页js调用oc代码+传递参数+避免中文参数乱码的解决方案(实例)

    此解决方案原理: 1.在ViewController.h中声明方法和成员变量,以及webView的委托: // //  ViewController.h //  JS_IOS_01 // //  Cr ...

  3. tengine 增加ngx_http_cache_purge_module 模块

    wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz tar zxvf ngx_cache_purge-2.1.tar.gz -- ...

  4. lua笔记二 赋值语句

    赋值是改变一个变量的值和改变表域的最基本的方法. a = "hello" .. "world" t.n = t.n + 1 Lua可以对多个变量同时赋值,变量列 ...

  5. linux怎么关闭iptables linux如何关闭防火墙

    Linux系统下面自带了防火墙iptables,iptables可以设置很多安全规则.但是如果配置错误很容易导致各种网络问题,那么如果要关闭禁用防火墙怎么操作呢,咗嚛本经验以centos系统为例演示如 ...

  6. HBase写入性能及改造——multi-thread flush and compaction(续:详细测试数据)[转]

    转载:http://blog.csdn.net/kalaamong/article/details/7290192 接上文啊: 测试机性能 CPU 16* Intel(R) Xeon(R) CPU   ...

  7. 【Linux技术】Windows与Linux系统下的库·初探

    库的定义  库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系统 ...

  8. Docker 入门(Mac环境)- part 3 服务(services)

    part-3 服务(services) 简介 一个应用的规模的扩大是很常见的事情,会经常用到负载均衡这些,如要实现这些功能,我们就会用到docker中更高一层的东西-service(服务). 比如说一 ...

  9. MIME详解

    MIME详解 原文:http://blog.csdn.net/cxm_hwj/article/details/6690058 MIME,英文全称为“Multipurpose Internet Mail ...

  10. Python3判断shell下进程是否存在&&启动&&邮件通知

    判断进程是否存在 def isRunning(process_name): try: process = len(os.popen('ps aux | grep "' + process_n ...