phaser源码解析(三) Phaser.Utils类下isPlainObject方法
/**
* #这是一个对jQuery.isPlainObject(obj)稍加修改的方法。 一个 普通对象 obj.toString() => "[object Object]"
* This is a slightly modified version of jQuery.isPlainObject. A plain object is an object whose internal class property is [object Object].
* @method Phaser.Utils.isPlainObject
* @param {object} obj - The object to inspect. ——#等待检查的对象
* @return {boolean} - true if the object is plain, otherwise false. ——#ture代表是一个普通对象, 否则返回false
*/
isPlainObject: function (obj) { // Not plain objects: 不是 普通对象 包括:
//#任何对象和值内置property属性的值不是[object Object]
// - Any object or value whose internal [[Class]] property is not "[object Object]"
// - DOM nodes ——#Dom对象
// - window ——#window对象
if (typeof(obj) !== "object" || obj.nodeType || obj === obj.window)
{
return false;
} // Support: Firefox <20
// The try/catch suppresses exceptions thrown when attempting to access
// the "constructor" property of certain host objects, ie. |window.location|
// #判断obj是否具有isPrototypeOf属性,isPrototypeOf是挂在Object.prototype上的。通过字面量或自定义类(构造器)创建的对象都会继承该属性方法.
//解释引子:http://www.cnblogs.com/phpmix/articles/1733599.html
try {
if (obj.constructor && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf"))
{
return false;
}
} catch (e) {
return false;
} //#如果通过了以上的验证
// If the function hasn't returned already, we're confident that
// #我们就可以认为参数obj是一个普通对象,通过{}和new创建的对象
// |obj| is a plain object, created by {} or constructed with new Object
return true;
}
phaser源码解析(三) Phaser.Utils类下isPlainObject方法的更多相关文章
- Mybatis源码解析(三) —— Mapper代理类的生成
Mybatis源码解析(三) -- Mapper代理类的生成 在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject( ...
- Celery 源码解析三: Task 对象的实现
Task 的实现在 Celery 中你会发现有两处,一处位于 celery/app/task.py,这是第一个:第二个位于 celery/task/base.py 中,这是第二个.他们之间是有关系的, ...
- 43.Permission源码解析和自定义权限类
drf的权限类位于permission模块 如何确定权限 认证.限流,权限决定是否应该接收请求或拒绝访问 权限检查在视图的最开始处执行,在继续执行其他代码前 权限检查通常会使用request.us ...
- SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的
系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...
- [源码解析] PyTorch 分布式(3) ----- DataParallel(下)
[源码解析] PyTorch 分布式(3) ----- DataParallel(下) 目录 [源码解析] PyTorch 分布式(3) ----- DataParallel(下) 0x00 摘要 0 ...
- 死磕 java同步系列之Phaser源码解析
问题 (1)Phaser是什么? (2)Phaser具有哪些特性? (3)Phaser相对于CyclicBarrier和CountDownLatch的优势? 简介 Phaser,翻译为阶段,它适用于这 ...
- ReactiveCocoa源码解析(三) Signal代码的基本实现
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状 ...
- ReactiveSwift源码解析(三) Signal代码的基本实现
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状 ...
- React的React.createRef()/forwardRef()源码解析(三)
1.refs三种使用用法 1.字符串 1.1 dom节点上使用 获取真实的dom节点 //使用步骤: 1. <input ref="stringRef" /> 2. t ...
随机推荐
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- NOIP2015 提高组(senior) 解题报告
过了这么久才来发解题报告,蒟蒻实在惭愧 /w\ Day1 T1 [思路] 模拟 [代码] #include<iostream> #include<cstring> #inclu ...
- HW2.18
public class Solution { public static void main(String[] args) { System.out.println("a" + ...
- Windows Service installutil 部署时,出错的解决办法-原创
出错信息如下: ---------------------------------------------------------- ~~~~~... The Rollback phase compl ...
- git 秘钥的生成
在命令查看自己的秘钥还是公钥 cat .ssh/id_rsa.pub/cat .ssh/id_rsa
- jbpm4.4 demo1
package cn.itcast.a_helloworld; import java.util.List; import org.jbpm.api.Configuration; import org ...
- 关于学习汇编的一些规则的理解(div mul cf of)
->1.div(除法) 被除数/除数 ->一共有三种格式的除法,分别是8位,16位,32位,这里的位数表示的是除数的位数 ->实现div其实也很简单就是除数为被除数的一半就ok - ...
- 【转】C++的面象对象总结
转自:http://www.cnblogs.com/icemoon1987/archive/2012/10/01/2709572.html 1. 面向对象:对象.类.继承 2. 构造函数: 类的数 ...
- Delphi 根据快捷方式路径取源文件地址
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...
- Could not initialize class org.apache.log4j.LogManager 报错
部署项目的时候,在windows下一切正常,但是在centos下就发生如下错误 Caused by: java.lang.ExceptionInInitializerError at com.dsid ...