首页 > 语言 > JavaScript > 正文

js实例属性和原型属性示例详解

2024-05-06 16:10:51
字体:
来源:转载
供稿:网友
本文通过实例向大家讲述了js实例属性和原型属性,详情请看注释,看不懂的话,请放弃javascript吧。
 
 

详情请仔细研读注释,这里就废话少说,直接上代码了。

 

复制代码代码如下:

<!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>

 

小伙伴们是否看明白了,了解了实例属性和原型属性了吗?本文讲述的非常的详细,推荐给大家,希望对小伙伴们能有所帮助


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选