相信對extend這個關鍵字你們都不陌生,固然extends在開發中好像碰到的更多些,今天就來和你們說說這二者的區別,不足之處歡迎你們斧(扶)正~~javascript
首先,講講在前端web開發中咱們用到的extend,咱們使用頻率最高的jquery框架中extend但是工具函數擴展中不可或缺的關鍵字。html
extend有兩大做用:前端
1.使用$.extend()擴展工具函數。代碼展現會更直觀,代碼以下:vue
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>extend擴展函數</title> 8 <script src="js/jquery.min.js"></script> 9 </head> 10 <body> 11 <script type="text/javascript"> 12 $(function(){ 13 $.extend({ 14 hello:function(str){ 15 alert('hello'+str+'!') 16 } 17 }); 18 $.hello('java'); 19 }) 20 </script> 21 </body> 22 </html>
頁面運行的結果:hello java !java
2.使用$.extend()擴展Objectnode
$.extend除了能夠擴展jquery自己函數以外,另外就是擴展已有的Object對象了。一般使用的語法格式以下:react
$.extend(target,[object1],[object2].....);jquery
1 var objTotal = $.extend(obj1,obj2..); 2 $.each(objTotal,function(key,value){ 3 li +="<li>"+key+":"+value+"</li>"; 4 }); 5 $("ul").append(li);
這就是前端開發關於extend擴展所知的兩個用途,那接下來再談談extends這個關鍵字的用法。web
固然了前端vue框架同樣也用到了這個關鍵字extend,代碼以下:後端
var apple = Vue.extend({ .... }) Vue.component('apple',apple);
extends這個關鍵字在javaweb開發中先後端都有用到,先來說講在前端的用法,講到前端咱們就不能忘了大名鼎鼎的react框架,
在react中主要起的是繼承做用,代碼以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src = "node_modules/react/umd/react.development.js"></script> <script src = "node_modules/react-dom/umd/react-dom.development.js"></script> <script src = "node_modules/babel-standalone/babel.min.js"></script> <title>component</title> <style></style> </head> <body> <div id = "example"></div> <script type = "text/babel"> class HelloMessage extends React.Component{ render(){ return <h1>hello,{this.props.name}</h1> } }; ReactDOM.render( <HelloMessage name = "chehl00"/>, document.getElementById('example') ); </script> </body> </html>
有沒有趕腳在Vue和react中extend,extends用法很類似,這也是一種相互借鑑哦,而後實現各自功能。
而後咱們再來講說,extends在java後端開發中的用法:
class A{ int i; void f(){} } class B extends A{ int j; void f(){} //重寫 void g(){} }
那麼,
B b = new B();
b就是子類對象的實例,不只可以訪問本身的屬性和方法,也可以訪問父類的屬性和方法。諸如b.i,b.j,b.f(),b.g()都是合法的。此時 b.f()是訪問的B中的f()
A a = new B();
a雖然是用的B的構造函數,但通過upcast,成爲父類對象的實例,不能訪問子類的屬性和方法。a.i,a.f()是合法的,而a.j,a.g()非 法。此時訪問a.f()是訪問B中的f()
綜上:extends, 能夠實現父類,也能夠調用父類初始化 this.parent()。並且會覆蓋父類定義的變量或者函數。這樣的好處是:架構師定義好接口,讓工程師實現就能夠了。整個項目開發效率和開發成本大大下降。
extend,extends這兩個關鍵字在開發中,仍是很重要很關鍵的,以上就是我今天想要和你們分享的內容。若有描述不科學,不嚴謹地方,歡迎指正~~~~