js怎么覆盖原有办法完成重写,差距详解

时间:2019-07-25 18:15来源:2020欧洲杯冠军竞猜官方网站
目的:提高完善的调用方法。 js怎么覆盖原有方法实现重写,js覆盖原有重写 htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312" /scriptfunction myblur () {alert("1、离开");}function bindEv

目的:提高完善的调用方法。

js怎么覆盖原有方法实现重写,js覆盖原有重写

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script>
function myblur () {
alert("1、离开");
}
function bindEvent(func){
myblur = func;
}
function myonclick() {
bindEvent(function(){
alert("天啊!myblur方法被覆盖了!");
});
}
</script>
</head>
<body>
<input type="text" onblur="myblur()" value="光标选中然后光标离开会调用myblur()方法"/>
<input type="button" onclick="myonclick()" value="覆盖myblur()" />
注:覆盖myblur()后,再次光标选中输入框然后再离开
</body>
</html>

目的:提高完善的调用方法。

如果你做了一个编辑器,里面有提供一些光标离开事件等,最好使用此方法来操作,因为当他人使用你的编辑器时,也许要用到编辑器提供的事件方法处理些事情,其中部分事件需要根据特殊要求进行重写,因此,出现这种情况,提供允许重写编辑器提供的事件方法是很必要的!

修改有2种方式:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script>
function myblur () {
alert("1、离开");
}
function bindEvent(func){
myblur = func;
}
function myonclick() {
bindEvent(function(){
alert("天啊!myblur方法被覆盖了!");
});
}
</script>
</head>
<body>
<input type="text" onblur="myblur()" value="光标选中然后光标离开会调用myblur()方法"/>
<input type="button" onclick="myonclick()" value="覆盖myblur()" />
注:覆盖myblur()后,再次光标选中输入框然后再离开
</body>
</html>

java 方法重写会覆盖原来的方法?

不会,如果你使用子类对象调用,调用的是重写后的方法,如果使用父类对象调用则调用的是重写前的方法即未被覆盖的方法 。  

htmlheadmeta http-equiv="Content-Type" content="text/html; charset=gb2312" /scriptfunction myblur () {alert("1、离开...

可以看到上面这2种方式都可以修改原型,那他们的差别究竟是什么呢?到底哪种方式才是推荐的的做法呢?

如果你做了一个编辑器,里面有提供一些光标离开事件等,最好使用此方法来操作,因为当他人使用你的编辑器时,也许要用到编辑器提供的事件方法处理些事情,其中部分事件需要根据特殊要求进行重写,因此,出现这种情况,提供允许重写编辑器提供的事件方法是很必要的!

js重写方法怎在实际的项目中使用?举个例子,我现在重写js的四舍五入方法toFixed

这个toFixed函数是js的原生函数 不需要另外加的
不过如果你自己需要扩展一些原生的对象的一些功能的话 就写在一个js文件里面,然后每个需要用到它的页面,都把这个js文件引入进来就可以了。
例如你需要扩展Date对象,加一个format Date.prototype.format=function(strFormat){}
把这个单独写在一个js文件里,然后在每个页面 中把这个js文件引入就可以了
<script type="text/javascript" src="/js/date.format.js"></script> 比如像这样的  

每个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象。javascript允许我们修改这个原型对象。

您可能感兴趣的文章:

  • 浅谈JavaScript 覆盖原型以及更改原型
  • js修改原型的属性使用介绍
  • 关于javascript原型的修改与重写(覆盖)差别详解

您可能感兴趣的文章:

  • 浅谈JavaScript 覆盖原型以及更改原型
  • js怎么覆盖原有方法实现重写
  • js修改原型的属性使用介绍
function Person()
{
}

Person.prototype.add = function(){
 alert(this.name);
};

Person.prototype.name = "aty";

var p1 = new Person();
p1.add();//aty

如果是先创建对象,然后再修改原型,那么如果采用方式1,已经创建的对象能够正确访问修改后的原型;如果采用方式2,已经创建的对象无法访问到修改后的原型。从这个角度来看,显然方式1比方式2更好。为什么会这样呢?

 很显然这与java中"修改引用"和"修改引用指向的对象"很相似,效果也是一样的。

方式2:重写(覆盖)原型对象

function Person()
{
}

Person.prototype = {
 add : function(){
  alert(this.name);
 },
 name : "aty"
}



var p2 = new Person();
p2.add();//aty

 

方式1:在原有的原型对象上增加属性或者方法

function Person()
{
}

function Animal()
{

}

var person = new Person();
var animal = new Animal();

// 修改原型
Person.prototype.say = function(){
 alert("person");
}

// 修改原型
Animal.prototype = {
 say : function(){
  alert("person");
 }
}

person.say();//person
animal.say();//Uncaught TypeError: undefined is not a function

以上这篇关于javascript原型的修改与重写(覆盖)差别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

function Person()
{
}

function Animal()
{

}

var person = new Person();
var animal = new Animal();
alert(person.__proto__ === Person.prototype);//true
alert(animal.__proto__ === Animal.prototype);//true

// 修改原型
Person.prototype.say = function(){
 alert("person");
}

// 修改原型
Animal.prototype = {
 say : function(){
  alert("person");
 }
}

alert(person.__proto__ === Person.prototype);//true
alert(animal.__proto__ === Animal.prototype);//false

编辑:2020欧洲杯冠军竞猜官方网站 本文来源:js怎么覆盖原有办法完成重写,差距详解

关键词: 欧洲杯竞猜