JavaScript原型链中toString()方法输出alert()和console.log()得到不同的结果

    1. <script language="javascript">
    2. function myObj(){
    3. var total = 0;
    4. }
    5. myObj.prototype.add = function(a,b){
    6. this.total = a + b;
    7. }
    8. myObj.prototype.toString = function(){
    9. return this.total;
    10. }
    11. var obj = new myObj();
    12. obj.add(1,2);
    13. console.log(obj);  // 这里输出结果为myObj
    14. alert(obj);     // 这里输出结果为3
    15. </script>

原因:

console.log() 可以打印任何类型的数据。而 alert() 只能输出string,如果alert输出是对象会自动调用toString()方法。如果想console.log() 输出的与alert相同,需要调用toString():

console.log(obj.toString());

时间: 2024-07-31 14:34:39

JavaScript原型链中toString()方法输出alert()和console.log()得到不同的结果的相关文章

javascript原型链与特权方法

<pre name="code" class="javascript">function ClassA() { var value=4; this.getValue= function() { return value; } this.setValue= function(value) { this.value=value; } } var instance= new ClassA(); document.write(instance.getValue(

alert与console.log

1.alert在页面中弹出 console.log是在控制台显示 例子 1 var aa="Silence"; 2 alert(typeof(aa)); 3 console.log(typeof(aa)); alert显示 console.log在控制台显示 2.alert()函数会阻断JavaScript程序的执行,从而造成副作用:而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑 3.JavaScript原型链中toString()方法输出alert()和

简介alert()与console.log()的不同

简单的说alert 是弹出提示而console.log是在调试工具里打日志,下面具体给大家列出alert()与console.log()的不同点, [1]alert() [1.1]有阻塞作用,不点击确定,后续代码无法继续执行 [1.2]alert()只能输出string,如果alert输出的是对象会自动调用toString()方法 e.g. alert([1,2,3]);//'1,2,3' [1.3]alert不支持多个参数的写法,只能输出第一个值 e.g. alert(1,2,3);//1 [

JavaScript原型链和继承

1.概念 JavaScript并不提供一个class的实现,在ES6中提供class关键字,但是这个只是一个语法糖,JavaScript仍然是基于原型的.JavaScript只有一种结构:对象.每个对象都有一个私有属性:_proto_,这个属性指向它构造函数的原型对象(property).它的原型对象也有一个属于自己的原型对象,这样层层向上知道一个对象的属性为null.根据定义null没有原型,它是这个原型链中的最后一个环节. 几乎所有的JavaScript中的对象都是位于原型链顶端的Objec

Array原型链添加“遍历”方法

<script> //1.在我们之前的项目里向原型链中集成方法时大多代码分析不严密,有时间我在这里会做详细分析; Array.prototype.each = function(fn) { try { this.i || (this.i = 0); //在这里,fn.constructor === Function保证了输入的构造类型 if (this.length > 0 && fn.constructor === Function) { while (this.i &

简述alert和console.log的区别

原文链接:http://www.cnblogs.com/sulishibaobei/p/sulishibaobei.html alert输出的结果为: console.log输出的结果为: 原来console.log() 可以打印任何类型的数据.而 alert() 只能输出string,如果alert输出是对象会自动调用 toString() 方法.如果想 console.log() 输出的与alert相同,需要调用 toString(). 所以将后面的改写成 console.log(hmac.

JavaScript学习总结(十七)——Javascript原型链的原理

一.JavaScript原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.在JavaScript中,用 __proto__ 属性来表示一个对象的原型链.当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止! 比如现在有如下的代码: 扩展Object类,添加Clone和Extend方法 1 /*扩展Object类,添加Clone,JS实现克隆的方法*/ 2 Ob

深入理解JavaScript原型链

前言 最近碰到一个题,大家可以试下. Object.prototype.a = function() { console.log("aaa "+this.name); }; Function.prototype.b = function() { console.log("bbb "+this.name); }; function Person(name) { this.name = name; } var person = new Person("Chin

浅谈JavaScript原型链

在javascript中是支持面向对象编程的,讲到面向对象(Object Oriented简称为OO)一般很容易想到继承和多态,而在javascript中呢,继承主要是靠原型链作为主要方法去实现的.其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 来看一段代码: function Animal(name,color){ this.name = name; this.color = color; } Animal.prototype.type = "动物"; Anima