tostring

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr

二次信任 提交于 2020-02-23 07:00:44
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload 1、__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $property, $value ) 给一个未定义的属性赋值时调用 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性) 2、__isset、__unset __isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法 __unset( $property ) 当在一个未定义的属性上调用unset()函数时调用此方法 与__get方法和__set方法相同

toString方法和valueOf方法以及Symbol.toPrimitive方法的学习

自作多情 提交于 2020-02-23 02:37:22
valueOf()方法和toString()方法介绍 valueOf()方法和toString() 我们知道在js中,'一切皆为对象'。每个对象都有一个toString()方法和value方法,其中toString()方法返回一个表示该对象的字符串,value方法返回该对象的原始值。对于toString方法来说,当对象被表示为文本值或者当以期望字符串的方式引用对象时。该方法被自动调用。对于一个对象,toSting()返回"[object type]",其中type是对象类型。如果x不是对象,toString()返回应有的文本值。 对于valueOf() 方法来说,默认情况下, valueOf() 会被每个对象Object继承。每一个内置对象都会覆盖这个方法为了返回一个合理的值,如果对象没有原始值,valueOf() 就会返回对象自身。 但是注意,对于Null如果 不同类型的对象的value方法的返回值 对象 返回值 Array 返回数组对象本身 Boolean 布尔值 Date 返回的时间是从1970年1月1日午夜开始计的毫秒数UTC Function 函数本身 Number 数字值 Object 对象本身。这是默认情况 String 字符串值 Math和Error对象没有valueOf方法 二者的使用场景以及区别与比较 通过来自MDN[! https://developer

Object类、常用API

半世苍凉 提交于 2020-02-22 05:39:08
主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object和Objects类 1.1 Object类 1.1.1 概述 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例 化的时候,最终找的父类就是Object。 如果一个类没有特别指定父类,那么默认则继承自Object类。例如:根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 1.1.2 toString方法 方法摘要 public String toString() :返回该对象的字符串表示。 toString方法返回该对象的字符串表示,其实该字符串内容就是 对象的类型+@+内存地址值 。 由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因 此也需要重写它。 覆盖重写 如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写

java Annotation(注解)

时光毁灭记忆、已成空白 提交于 2020-02-21 22:49:20
1.程序允许通过注解(Annotation)的方式进行程序的定义,而在java SE中存在3中注解:@Override、@Deprecate和@Suppress Warnings. 2.准确的覆写方法:@Override 在进行方法覆写的过程中,要求方法的名称、参数的类型及个数完全相同,而在开发时可能手误导致方法不能正确地覆写,而加上了"@Override"之后可以准确的进行方法地覆写. class Message { public String toString ( ) { //原本打算覆写toString return "Hello World" } } public class Test2 { public static void main ( String [ ] args ) throw Exception System . out . println ( new Message ( ) ) ; //错误 } } 原本打算在Message覆写类中Object的toString()方法的,但是编写方法时没有写出正确的方法名称,所以就没有发生准确的覆写,而JDK也只会认为toString是一个新的方法,所以编译不会出错,可从实际上讲,这个方法应该是被覆写了的,为了保证在编译时正常解决,在方法覆写可以增加@Override定义 准确的覆写 class Message {

为什么用Object.prototype.toString.call(obj)检测对象类型?

故事扮演 提交于 2020-02-21 18:52:49
转自 https://www.cnblogs.com/youhong/p/6209054.html 最近做了做一些js面试 25 Essential JavaScript Interview Questions* ,其中第一道是:使用 typeof bar === "object" 检测”bar”是否为对象有什么缺点?如何避免? 这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的, null 的结果也是 object,数组的结果也是 object,有时候我们需要的是 "纯粹" 的 object 对象。如何避免呢?比较好的方式是: console.log(Object.prototype.toString.call(obj) === "[object Object]"); 使用以上方式可以很好的区分各种类型: (无法区分自定义对象类型,自定义类型可以采用instanceof区分) console.log(Object.prototype.toString.call("jerry"));//[object String] console.log(Object.prototype.toString.call(12));//[object Number] console.log(Object.prototype.toString.call(true));//

[译]JavaScript中,{}+{}等于多少?

霸气de小男生 提交于 2020-02-10 13:32:42
最近, Gary Bernhardt 在一个简短的演讲视频“ Wat ”中指出了一个有趣的JavaScript 怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得出的. 在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值都会被自动转换成这两种类型的值. 为了能够弄明白这种隐式转换是如何进行的,我们首先需要搞懂一些基础知识.注意:在下面的文章中提到某一章节的时候(比如§9.1),指的都是ECMA-262语言规范( ECMAScript 5.1 )中的章节. 让我们快速的复习一下.在JavaScript中,一共有两种类型的值:原始值(primitives)和对象值(objects).原始值有: undefined , null , 布尔值(booleans), 数字(numbers),还有字符串(strings).其他的所有值都是对象类型的值,包括数组(arrays)和函数(functions). 1.类型转换 加法运算符会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串,这刚好对应了JavaScript引擎内部的三种抽象操作:ToPrimitive(),ToNumber(),ToString() 1.1 通过ToPrimitive()将值转换为原始值

[译]JavaScript中,{}+{}等于多少?

自古美人都是妖i 提交于 2020-02-10 13:30:39
[译]JavaScript中,{}+{}等于多少? 原文: http://www.2ality.com/2012/01/object-plus-object.html 最近, Gary Bernhardt 在一个简短的演讲视频“ Wat ”中指出了一个有趣的JavaScript 怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得出的. 在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值都会被自动转换成这两种类型的值. 为了能够弄明白这种隐式转换是如何进行的,我们首先需要搞懂一些基础知识.注意:在下面的文章中提到某一章节的时候(比如§9.1),指的都是ECMA-262语言规范( ECMAScript 5.1 )中的章节. 让我们快速的复习一下.在JavaScript中,一共有两种类型的值:原始值(primitives)和对象值(objects).原始值有: undefined , null , 布尔值(booleans), 数字(numbers),还有字符串(strings).其他的所有值都是对象类型的值,包括数组(arrays)和函数(functions). 1.类型转换 加法运算符会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串

[译]JavaScript中,{}+{}等于多少?

会有一股神秘感。 提交于 2020-02-10 13:28:26
原文: http://www.2ality.com/2012/01/object-plus-object.html 最近, Gary Bernhardt 在一个简短的演讲视频“ Wat ”中指出了一个有趣的JavaScript 怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得出的. 在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值都会被自动转换成这两种类型的值. 为了能够弄明白这种隐式转换是如何进行的,我们首先需要搞懂一些基础知识.注意:在下面的文章中提到某一章节的时候(比如§9.1),指的都是ECMA-262语言规范( ECMAScript 5.1 )中的章节. 让我们快速的复习一下.在JavaScript中,一共有两种类型的值:原始值(primitives)和对象值(objects).原始值有: undefined , null , 布尔值(booleans), 数字(numbers),还有字符串(strings).其他的所有值都是对象类型的值,包括数组(arrays)和函数(functions). 1.类型转换 加法运算符会触发三种类型转换:将值转换为原始值,转换为数字,转换为字符串,这刚好对应了JavaScript引擎内部的三种抽象操作

toString和valueOf

一个人想着一个人 提交于 2020-02-08 12:05:53
toString 今天在看以前写的代码时,遇到某个老师的点评: var obj = {};var root = [1, 2, 3];obj[root.join(',')] = value; 一看到这个,我就又犯难了。我对这javascript的类型转换实在记不住!我知道obj[key],中的key如果不是字符串,会调用key.toString()转换为字符串。但是不知道[1, 2, 3].toString() === “1,2,3”。虽然这些东西都是定死的,记不住也没关系吧,只要记得在类型值判断时尽量用严格判断就好。下面记几个常见的toString: var obj = {};obj.toString() === '[object Object]';[].toString() === '';[1, 2, 3].toString() === 大专栏 toString和valueOf39;1,2,3';['a', 2, function(){}].toString() === 'a,2,function(){}'; // 不不,这个不常见。 valueOf 这个东西返回一个原始值,而且对各个JS固有对象,定义还不同。 对象 返回值 Array 数组本身。 Boolean 自身Boolean值。 Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC

如何判断一个对象是数组还是对象

烂漫一生 提交于 2020-02-08 10:05:42
如何判断一个对象是数组还是对象 一、 typeof判断数据类型(判断数组跟对象都返回object) console.log(typeof null); // "object" console.log(typeof function () { return 1; }); // "function" console.log(typeof '梦龙小站'); // "string" console.log(typeof 1); // "number" console.log(typeof a); // "undefined" console.log(typeof undefined); // "undefined" console.log(typeof []); // "object" console.log(typeof NaN); // "number" console.log(typeof {}); // "object" 二、 instanceof判断对象的原型链是否是指向构造函数的prototype   var arr = [1,2,3,1];   console.log(arr instanceof Array)//true 三、 对象的constructor属性   var arr = [1,2,3,1];   console.log(arr.constructor ===