2016年12月

  • 正常情况下的一个function
    写法一

    f = function(){}

或者写法二

function f(){}
  • 为new以后的新对象提供属性的function
function F(){this.x = 1; this.obj_f = function(){}}
var o = new F()
o.x
o.obj_f()
  • 为所有new以后的新对象提供公共属性的function

写法1

function F(){F.prototype.pub_x = 1; F.prototype.pub_f = function(){} }
var o1 = new F()
var o2 = new F()
o1.pub_x === o2.pub_x
o1.pub_f === o2.pub_f

写法2

function F(){}
F.prototype = {pub_x : 1, pub_f : function(){} }
var o1 = new F()
var o2 = new F()
o1.pub_x === o2.pub_x
o1.pub_f === o2.pub_f
  • 不需要new直接使用的function
function F(){}
F.F_pub_f = function(){}
  • 综上所述的F, 自己既是一个function, 又是一个object, 又能给别人new. 可以为new的对象提供单独的属性, 公共的属性, 以及不需要new也能使用的属性.
function F(){} //F是一个函数
function F(){this.x = 1; this.obj_f = function(){}}  //F可以给别人new了. 提供单独的属性x, obj_f. 如 var f = new F()
F.prototype = {pub_x : 1, pub_f : function(){} }  // F可以给new出来的对象提供公共的属性pub_x, pub_f
F.F_pub_x = 1
F.F_pub_f = function(){}  //不需要new也能直接访问的F的属性F_pub_x, F_pub_f.

获取dom元素的实际宽高,而不是style里面设置的宽高, 使用offsetWidth/offsetHeight.例如:

<div id="element">test</div>
<script>
console.log(element.offsetWidth, element.offsetHeight)
</script>

首先安装android studio
下载安卓的几个插件包,sdk,ndk等等.
被Wall了? 找个hosts. 我发现223.255.227.170作为developer.android.com, 74.125.28.121作为tools.android.com似乎速度还不错.
最后的ant属于单独安装的. 里面的ant.cmd在编译时需要用到.

我都是默认安装, 几个系统环境变量如下

NDK_ROOT
C:\Users\Jac\AppData\Local\Android\Sdk\ndk-bundle\

ANDROID_SDK_ROOT
C:\Users\Jac\AppData\Local\Android\Sdk

ANT_ROOT
C:\r\apache-ant-1.9.7-bin\apache-ant-1.9.7\bin

今天打算修改一下hosts文件, 却发现文件不能修改. 上网查一下windows可否知道哪个进程锁定了文件? 貌似并没有方法. 需要借助其他软件.

  • 首先用下载 unlocker
    用unlocker看了一下,并没有什么锁定它.

  • 关掉所有的软件.只保留一个administrator权限的cmd窗口.

  • cmd下使用ren命令重命名hosts,发现可以, 然而很快就被某个进程创建一个新的hosts文件, 里面只有一句话:

    192.168.0.143 windows10.microdone.cn

这是什么鬼?
这首先说明了, 创建这个的不是windows的系统行为.因为微软就算升级了系统要锁定hosts也不可能指向一个莫名其妙的.cn地址.
那么问题来了, 到底是哪个进程创建了hosts?

解压缩打开procmon.exe后, 创建filter, 先通过下拉菜单选择event class is File System ,再选择 operation is CreateFile

确定后, 在输出的窗口搜索hosts, 发现一个可疑的对象UPService.exe

中毒了? 搜索发现这个对象是银联的软件... 我用银联吗? 不用, 删掉它!

然后发现hosts已经不会被自动创建了.

改好hosts, 用attrib +R hosts 先给加个只读属性, 以防哪个家伙修改. 当然这个级别的保护还是比较低的. 要升高保护, 可以再加上+S属性, 以及设定访问权限.