JS对象(JS Objects)

在使用JS工作时,有一些对象和方法会被频繁的使用。下面是它们的一个小的集合。

  • Math.floor(v),Math.ceil(v),Math.round(v) - 从浮点数获取最大,最小和随机整数
  • Math.random() - 创建一个在0到1之间的随机数
  • Object.keys(o) - 获取对象的索引值(包括QObject)
  • JSON.parse(s), JSON.stringify(o) - 转换在JS对象和JSON字符串
  • Number.toFixed(p) - 修正浮点数精度
  • Date - 日期时间操作

你可以可以在这里找到它们的使用方法:JavaScript reference

You can find them also at: JavaScript reference

下面有一些简单的例子演示了如何在QML中使用JS。会给你一些如何在QML中使用JS一些启发。

打印所有项的键(Print all keys from QML Item)

Item {
  id: root
  Component.onCompleted: {
    var keys = Object.keys(root);
    for(var i=0; i<keys.length; i++) {
      var key = keys[i];
      // prints all properties, signals, functions from object
      console.log(key + ' : ' + root[key]);
    }
  }
}

转换一个对象为JSON字符串并反转转换(Parse an object to a JSON string and back

Item {
  property var obj: {
    key: 'value'
  }

  Component.onCompleted: {
    var data = JSON.stringify(obj);
    console.log(data);
    var obj = JSON.parse(data);
    console.log(obj.key); // > 'value'
  }
}

当前时间(Current Date)

Item {
  Timer {
    id: timeUpdater
    interval: 100
    running: true
    repeat: true
    onTriggered: {
      var d = new Date();
      console.log(d.getSeconds());
    }
  }
}

使用名称调用函数(Call a function by name)

Item {
  id: root

  function doIt() {
    console.log("doIt()")
  }

  Component.onCompleted: {
    // Call using function execution
    root["doIt"]();
    var fn = root["doIt"];
    // Call using JS call method (could pass in a custom this object and arguments)
    fn.call()
  }
}