当前位置: 首页 > news >正文

公有属性 公有方法(原型方法) 私有属性 私有方法 特权方法 静态属性 静态方法 对象字面量创建...

示例1

 1 function text(a,b,c){
 2         var si='私有变量测试';
 3         this.b = b;
 4         this.my = function(){
 5             console.log(c)
 6         }
 7         this.sy = function(si){
 8             console.log(si)
 9         }
10         function ceshi(){
11             console.log(a)
12         }
13         console.log(si);
14         /*私有变量和私有方法,只能在原型对象内执行
15         *实例化对象不继承
16         */
17 }
18 text.prototype.css ={
19     c : '3',
20     m:'无法用this',
21     mynew : function(){
22         return this.c;//返回的是3,没有this的话返回Undefined
23     }
24 }
25     var new1 = new text('a','b','test3');//=>new方法创建实例对象时,会执行对应的原型对象
26     console.log(new1);
27     new1.my();//test3   =>特权方法可以在外部调用
28     text('a','b','test3');
29     new1.sy('fdsa');//undefined =>外部实例化对象不继承私有变量;无法调用
30     console.log(new1.css.mynew('das')); //=>实例化调用公共方法,对象字面量
31     console.log(new1.css.m); //=>实例化调用公共方法(原型方法),对象字面量创建css公共方法
32     console.log(new1.css);

示例2

 1     function user(name,age){
 2         //公有属性
 3         this.name = name;
 4         //私有属性
 5         var age = age;
 6         //私有方法
 7         //=>私有方法在实例化New时执行,只能内部调用
 8         function alertAge(age){
 9             console.log('alertAge:'+age);
10         };
11         alertAge(age);
12         /*特权方法*/
13         this.getName = function(){
14             return name;
15             //注:在原型对象外创建的公共原型方法,return时需要添加this指向当前的name
16         }
17     }
18     user.age = 26;//静态属性
19     user.getName2 = function(){//静态方法
20         return this.myname;
21     };
22     user.prototype.getName = function(){ //公有方法
23             return this.name;
24     }
25     var users = new user('实例名','实例年纪');
26     console.log(user.age);//外部调用公有属性
27     console.log(users.age);//实例对象不继承私有属性
28     console.log(user.alertAge);//外部无法调用私有方法
29     console.log(users.alertAge);//实例化不继承私有方法
30     console.log(user.getName);//无实例化的情况下,只能调用私有属性和私有方法
31     console.log(users.getName());//=>调用特权方法 echo 实例名

部分摘自http://www.jb51.net/article/64278.htm

  1 var obj = new c('hello world');
  2 function c(v){
  3     console.log(v);
  4     this.faction = v;
  5 }
  6 console.log(obj)
  7 console.log(obj.faction);
  8 /*1.公有属性和公有方法*/
  9 function User(name,age){
 10   this.name = name;//公有属性
 11   this.age = age;
 12 }
 13 User.prototype.getName = function(){
 14   //公有方法
 15   return this.name;
 16 }
 17 var user = new User('fire子海',26);
 18 console.log(user.getName());//output:fire子海
 19 /*2.私有属性和方法*/
 20 function User(name,age){
 21   var name = name;//私有属性
 22   var age = age;
 23   function alertAge(){//私有方法
 24      alert(age);
 25   }
 26   alertAge(age); //弹出26
 27 }
 28 var user = new User('fire子海',26);
 29 /*3.静态属性和方法*/
 30 function User(){}
 31 User.age = 26;//静态属性
 32 User.myname = 'fire子海';
 33 User.getName =function(){//静态方法
 34   return this.myname;//如果这里使用this.name,返回的将是User,所有改用了myname,
 35 }
 36 console.log(User.getName());//output:fire子海
 37 /*4.特权方法*/
 38 function User(name,age){
 39   var name = name;//私有属性
 40   var age = age;
 41   this.getName = function(){ //特权方法
 42      return name;//私有属性和方法不能使用this调用
 43   }
 44 }
 45 var user = new User('fire子海',26);
 46 console.log(user.getName());//output:fire子海
 47 /*5.静态类*/
 48 var user = {
 49   init:function(name,age){
 50    this.name = name;
 51    this.age = age;
 52   },
 53   getName:function(){
 54    return this.name;
 55  }
 56 }
 57 user.init('fire子海',26);
 58 console.log(user.getName());//output:fire子海
 59 /*6.公有方法的调用规则*/
 60 function User(){
 61   this.myname = 'fire子海';//公有属性
 62   this.age = 26;
 63   this.do = function(){//特权方法
 64     return this.myname+'学习js';
 65   }
 66 }
 67 User.eat = function(food){
 68  return '晚餐只有'+food;
 69 }
 70 User.prototype.alertAge = function(){
 71   alert(this.age);
 72 }
 73 User.prototype.alertDo = function(){
 74   alert(this.do());//调用特权方法
 75 }
 76 User.prototype.alertEat = function(food){
 77   alert(User.eat(food));//只能通过对象本身调用静态方法
 78   //alert(this.ear(food))这样调用将出错:this.eat is not a function
 79 }
 80 var user = new User();
 81 user.alertAge();//alert:26
 82 user.alertDo();//alert:fire子海学习js
 83 user.alertEat('方便面')//alert:晚餐只有方便面
 84 /*7.静态方法的调用规则*/
 85 function User(){}
 86 User.age = 26;//静态属性
 87 User.myname = 'fire子海';
 88 User.getName =function(){//静态方法
 89   return this.myname;
 90 }
 91 var user = new User();
 92 console.log(user.getName);//TypeError: user.getName is not a function
 93 user.supper = '方便面';
 94 user.eat = function(){
 95  return '晚餐只有'+this.supper;
 96 }
 97 user.eat();//晚餐只有方便面
 98 /*8.特权方法的调用规则*/
 99 function User(girlfriend){
100    var girlfriend = girlfriend;
101    function getGirlFriend(){
102      return '我女朋友'+girlfriend+'是美女!';
103    }
104   this.myname = 'fire子海';//公有属性
105   this.age = 26;
106   this.do = function(){//特权方法
107     return this.myname+'学习js';
108   }
109   this.alertAge = function(){
110    this.changeAge();//特权方法调用公有方法
111     alert(this.age);
112   }
113   this.alertGirlFriend = function(){
114    alert(getGirlFriend());//调用私有方法
115   }
116 }
117 User.prototype.changeAge = function(){
118   this.age = 29;
119 }
120 var user = new User('某某');
121 user.alertAge();//alert:29
122 user.alertGirlFriend();//alert:我的女朋友某某是美女!
123 /*9.私有方法*/
124 function User(girlfriend){
125    var girlfriend = girlfriend;
126   this.myname = 'fire子海';//公有属性
127   this.age = 26;
128   function getGirlFriend(){
129    //this.myname ;//此时的this指向的window对象,并非User对象,
130     // this.myname = 'fire子海',此时的this指向的是getGirFriend对象了。
131   //如果通过this调用了getGirFriend中不存在的方法呀属性,this便会指向window 对象,只有this调用了getGirlFriend存在的方法和属性,this才会指定getGirlFriend;
132      alert(User.eat('泡面'));//alert:晚餐只有方便面
133   }
134   this.do = function(){//特权方法
135     return this.myname+'学习js';
136   }
137   this.alertAge = function(){
138     this.changeAge();//特权方法调用公有方法
139     alert(this.age);
140   }
141   this.alertGirlFriend = function(){
142    getGirlFriend();//调用私有方法
143   }
144 }
145 User.eat = function(supper){
146  return '晚餐只有'+supper;
147 }
148 var user = new User('某某');
149 user.alertGirlFriend();

 

转载于:https://www.cnblogs.com/NB-JDzhou/p/7207139.html

相关文章:

  • angularJS指令
  • 头文件assert.h
  • 后台运行命令:amp;和nohup command amp; 以及关闭、查看后台任务
  • 进程间通信之-信号signal--linux内核剖析(九)
  • 入门之快速排序
  • 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  • Vue框架 周期
  • 转 JavaScript 检查(Linting)工具的比较
  • 前端知识学习——html
  • oracle中length、lengthb、substr、substrb用法小结
  • SAS笔记(5) FLAG和计数器
  • 用于检测移动设备(包括平板电脑)的轻量级PHP类
  • 170511、Spring IOC和AOP 原理彻底搞懂
  • CodeChef Forest Gathering —— 二分
  • ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现...
  • Android单元测试 - 几个重要问题
  • extjs4学习之配置
  • golang中接口赋值与方法集
  • HomeBrew常规使用教程
  • Java读取Properties文件的六种方法
  • Java深入 - 深入理解Java集合
  • java小心机(3)| 浅析finalize()
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux Process Manage
  • nodejs调试方法
  • 爱情 北京女病人
  • 每天一个设计模式之命令模式
  • 前端技术周刊 2019-02-11 Serverless
  • 区块链分支循环
  • 手机端车牌号码键盘的vue组件
  • 听说你叫Java(二)–Servlet请求
  • 王永庆:技术创新改变教育未来
  • 微信小程序设置上一页数据
  • 与 ConTeXt MkIV 官方文档的接驳
  • ​secrets --- 生成管理密码的安全随机数​
  • $forceUpdate()函数
  • (2)nginx 安装、启停
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (java)关于Thread的挂起和恢复
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (搬运以学习)flask 上下文的实现
  • (二十四)Flask之flask-session组件
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)插入排序
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)平衡树
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ::before和::after 常见的用法
  • @DataRedisTest测试redis从未如此丝滑
  • @Transient注解
  • [ IO.File ] FileSystemWatcher