javascript面向对象属性和方法

javascript中的属性和方法归归类,大概有这么四种类型,

(1) 私有类型:相当于java或者C#中的private类型,不可以直接访问,需要通过 getter,setter。

(2) 动态公共类型:每个对象共享一个副本,外部可以访问

(3) 静态公共类型:通过原型延伸出来的属性

(4) 类属性:作为类型的属性,直接通过类名可以访问的。

举例来说:

 1   function widget() {
2 var width="100px"; //私有属性
3 this.Name = "widget"; //动态公共属性
4 var Show = function () { //私有方法
5 alert(width);
6 }
7 this.Hide = function () {//动态的公共方法
8 alert("hide");
9 }
10 this.GetWidth = function(){return width;}
11 }
12 widget.minPrice = 0;
13 widget.prototype = {
14 minWidth:"100px",
15 minHeight:"100px"
16 };
17 var w = new widget();
18 alert(w.width); //显示结果:undefined
19 alert(w.GetWidth());//getter,显示:100px
20 alert(w.Name);//公共属性,显示:widget
21 alert(w.minPrice);//
22 alert(widget.minPrice);静态属性,无法通过对象访问,显示结果:undefined
23 var wex = new widget();
24 alert(w.minHeight);//原型属性,对象访问
25 alert(wex.minHeight);

原型属性需要补充呢。。

OK,公有,私有,都有了,那么javascript里如何实现封装?你懂的。。。
回顾一下扩展jQuery的时候,有两个重要的方法:

1 jQuery.fn.extend(object);  
2 jQuery.extend(object);

这两个方法有何区别,很简单哦,第一行是扩展jQuery对象的属性,第二行是扩展jQuery类本身的属性。看看它的源码就知道了:

1 jQuery.fn = jQuery.prototype = {      
2    init: function( selector, context ) {//…. 
3
4    //……
5
6 };

jQuery.fn = jQuery.prototype

你懂的。

原文地址:https://www.cnblogs.com/xinchuang/p/2295250.html