原生方法系列(查缺补漏 不断更新)

Function.call   Function.apply

将其他对象的方法"借用"在自己身上用(this)    Function.call 和Function.apply的行为非常相似  只不过是Function.call接受的参数列表 Function.apply接受的是参数数组

    var friend = {
         food:0,
            eat:function(amount,money) {
                this.food = amount;
                console.log(money);
            }
        }//friend对象有一个eat方法  设置自己的food属性 并且输出相应的money
        var me = {
            food:0,
            isHungry:function() {
                return this.food < 100;
            }
        }  //me只有一个根据food值判断是否饥饿的方法 me很懒 想使用朋友的eat方法(可以理解为喂我吃) 通过this的绑定eat方法中的this指向了我 所以我不在饥饿了

        console.log(me.isHungry());
        friend.eat.call(me,100,"120");  //call 接受参数列表
        console.log(me.isHungry());
        friend.eat.apply(me,[100,"120"]); //apply 接受参数数组
        console.log(me.isHungry()); 

生成对象的三种方法

对象字面量

  

    var dog = {
            name:"ha",
            say:function() {
                return "wang";
            }
        }    dog.age = 9;    console.log(dog.age)  //9   

其实可以理解为对象字面量是Object.create()的一种快捷调用

        var dog = Object.create(Object.prototype,{
            name:{
                value:"sss"
            },
            say:{
                value:function() {
                    return "wang";
                }
            }
        });

        console.log(dog.say()); //wang  //会在下面介绍Object.create()

这种方式是创建简单的一次性对象的最佳选择

new Object()

        var dog = new Object({
            name:"haha",
            say:function() {
                return "wang";
            }
        });

        console.log(dog.say());//wang 

通过原生对象的构造函数进行对象的创建     注意原生对象的构造函数是属于全局命名空间的 也就是通过winow.Object能获取到这个构造函数(有可能被修改了)

Object.create(args1,args2)   第一个参数是提供原型的对象  第二个参数是提供可选属性的对象   Object.create() 提供了new操作符的优点

        var person = {
            getOld:function() {
                this.age = this.age + 10;
                return this.age;
            }
        }
          var haha = Object.create(person,{
              age:{
                  value:10,
                  writable:true
              }
          });
          console.log(haha.getOld());  //20

第二个参数可选属性对象相应的属性配置需要配置 否则 默认为false  就是不可修改 不可以枚举

window.getComputedStyle(元素,伪类)  第二个参数不是必须的   使用这个方法可以获得当前元素所有使用的最终的CSS属性值  返回一个样式声明对象  它是一个只读的对象

对比 element.style   element.style 也能获得一个元素的样式声明对象  但是element.style只能获取元素style属相里面设置的css属性  但是element.style 是可以读写的

在老版本的IE上是不支持window.getComputedStyle()这个方法的 可以使用element.currentStyle  它同样是一个只读的对象  我在IE11 上window.getComputedStye()  element.currentStyle 都支持

要获取我们获得的样式声明对象obj(无论是通过window.getComputedStyle() 或者 element.currentStyle获取的)   可以通过 obj.attrName 或者   obj[‘attrName‘]  这样的方式获取

但是在不同的浏览器下同样的属相  attrName 的定义又有可能不同    通用的方法是  使用getPropertyValue(‘attrName‘)     (不支持驼峰  获取background-color   getPropertyValue(‘background-color‘))

时间: 2024-10-12 13:42:03

原生方法系列(查缺补漏 不断更新)的相关文章

原生方法系列 3(查缺补漏 不断更新)

bind    对于给定函数,创建具有与原始函数相同的主体的绑定函数.在绑定函数中,this 对象将解析为传入的对象.绑定函数具有指定的初始参数 返回值   与 function 函数相同的新函数,thisArg 对象和初始参数除外 这个函数的功能就是改变原来函数的this对象和初始化参数 var check = function(value) { if(typeof value !== 'number') { return false; } else { return value >= thi

Android查缺补漏(View篇)--在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0 ? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_view); myview = ViewUtils.find(this, R.id.myview); getViewSize("onCr

Android查缺补漏--Service和IntentService

Service的运行不依赖界面,即使程序被切换到后台,Service仍然能够保持正常运行.当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行. Service 分为启动状态和绑定状态.当处于仅启动状态时,通过 stopService或 stopSelf 即可停止 Service.当处于绑定状态时需要通过 unBindService 和 stopService 结合使用才能完全停止 Service. 一.Service的生命周期(onCreate()-onStartComma

Android查缺补漏(View篇)--自定义 View 的基本流程

View是Android很重要的一部分,常用的View有Button.TextView.EditView.ListView.GridView.各种layout等等,开发者通过对这些View的各种组合以形成丰富多彩的交互界面,一个应用中界面交互的体验往往在应用的受欢迎程度上起了很关键得作用,所以开发者们大多会想方设法的做出一个更加精美的界面,例如:通过自定义View.深入学习View的原理以便更好的对其优化使其在操作起来更加流畅等等,也正因为如此,在面试中View也常常作为面试官重点考察的对象之一

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定义View的详细绘制方法.如果把自定义View比作盖一座房子,那么上篇文章就相当于教会了我们怎么一步步的搭建房子的骨架,而本篇文章将要教会我们的是为房子的骨架添砖加瓦直至成型,甚至是怎么装修. Canvas 为了后文更为方便的讲解Canvas的常用方法的使用,我们先来做一些准备工作,创建一个自定义V

Android查缺补漏(View篇)--事件分发机制源码分析

在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 <Android查缺补漏(View篇)--事件分发机制> ,先来看一下本篇的分析思路,一会儿会按照事件传递的顺序,针对以下几点进行源码分析: Activity对点击事件的分发过程 PhoneWindow是如何处理点击事件的 顶级View对点击事件的分发过程 View对点击事件的处理过程 Activity对点击事件的分发过程 通过上一篇博文中我们

React查缺补漏之二

译文链接 通过给一个通用函数传入参数定制特定函数的用法 _onFieldChange函数是一个通用实例方法,通过给这个函数传入不同的参数来实现返回结果的不同. 在构造函数中,进行绑定(没有想过这种用法). 1. `this._onNameChanged = this._onFieldChange.bind(this, 'name');` 2. `this._onPasswordChanged =this._onFieldChange.bind(this, 'password');` **注意点击

Android查缺补漏--ContentProvider的使用

ContentProvider (内容提供者)是一种共享型组件,可以为系统内应用于与应用之间提供访问接口. ContentProvide要想正常工作需要三个关键点: ContentProvider:对外提供数据的访问接口. Uri:ContentProvider的唯一标识,外界可根据其访问对应的ContentProvider. ContentResolver 比如,当应用A想把自己数据暴露出来让别的应用也可以操作的话,就可以在应用A内部创建一个ContentProvider实现相关方法并添加UR

Android查缺补漏(线程篇)-- IntentService的源码浅析

本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8975114.html 在Android中有两个比较容易弄混的概念,Service和Thread,我们都知道这两个东西都可以执行后台任务,但要注意的是Service是跑在主线程中的,如果不做特殊处理是会阻塞主线程的,而IntentService正好弥补了这一点,在<Android查缺补漏--Service和IntentService>这篇博文中已经简单介绍过了IntentSe